Projekt

Obecné

Profil

Jekyll » Historie » Verze 97

Lukáš Moučka, 2019-11-05 13:40

1 1 Lukáš Moučka
h1. Jekyll
2 2 Lukáš Moučka
3 97 Lukáš Moučka
!{float: right; padding-left: 1em; width: 15em;}logo-jekyll.png!
4 89 Lukáš Moučka
_Jekyll_ je open source nástroj určený pro generování statických webových stránek založený v roce 2008 zakladateli _GitHubu_. Výsledný vygenerovaný web nemá žádný backend – v pozadí neběží žádné _PHP_, _Java EE_ apod. Samotný generátor je napsaný v programovacím jazyce _Ruby_ a renderuje markdown (_odlehčený_ _značkovací_ _jazyk_) do HTML (_Hypertext_ _Markup_ _Language_) – web je možné psát rovnou i v HTML. Stále patří  společnosti _GitHub_ a používají ho pro svou službu _Github Pages_. Hlavní využití má pro vývojáře k dokumentaci softwaru. Dále je využitelný pro osobní blogy a v jistých případech může být použit místo _wiki_.
5 11 Lukáš Moučka
6
h2. Případy užití
7 12 Lukáš Moučka
8 11 Lukáš Moučka
h3. GitHub Pages
9 12 Lukáš Moučka
10 80 Lukáš Moučka
Nejjednodušším způsobem je použití _Jekyllu_ v rámci _GitHubu_. Webové stránky zde mohou ukazovat autorovo portfolio nebo sloužit jako dokumentace k softwaru. Není potřeba vlastnit žádnou doménu ani mít zřízený hosting, kde by staticky vygenerovaný web běžel. Při založené nového repozitáře pro web dojde k vytvoření nové @branch@ vedle naší @master branch@. Níže podrobnější návod.
11 13 Lukáš Moučka
12 41 Lukáš Moučka
h4. Instalace
13 17 Lukáš Moučka
14 47 Lukáš Moučka
_Instalace je pro potřeby tohoto článku ve zjednodušené formě._
15 46 Lukáš Moučka
16 65 Lukáš Moučka
# *Vytvoření repozitáře* – po přihlášení se na stránkách _GitHubu_ je vytvoříme nový repozitář, jehož název bude shodný s naším uživatelským nebo jménem organizace. V případě nevalidního zadání údajů nebude nově založený repozitář fungovat.
17
# *Klonování repozitáře* – po úspěšném založení nového repozitáře jej naklonujeme do námi definovaného lokálního uložiště.
18 22 Lukáš Moučka
!klonovani-repozitare.jpg!
19 25 Lukáš Moučka
# *Vytvoření inicializačního souboru* – vstoupíme do složky s projektem a vytvoříme soubor @index.html@.
20 26 Lukáš Moučka
!vytvoreni-souboru-index.jpg!
21 59 Lukáš Moučka
# *Nahrání souboru @index.html@* – soubor @index.html@ je nutné v rámci adresářové struktury přidat do gitu a provést @commit@ následovaný @pushem@. Do souboru je vhodné vložit nějaký text, abychom si ověřili funkčnost služby _Github_ _Pages_. Následně již můžeme nahrát soubory nutné pro funkčnost _Jekyllu_, resp. pro jeho generování na statický obsah.
22 32 Lukáš Moučka
!nahrani-indexu.jpg!
23 36 Lukáš Moučka
24 59 Lukáš Moučka
Po instalaci je možné zakládat nové stránky, vkládat příspěvky nebo měnit vzhled za pomocí předdefinovaných šablon nebo pomocí CSS (_Cascading_ _Style_ _Sheets_). Po každé provedené úpravě webu, resp. commitu je potřebovat vygenerovat nový statický obsah. Dle konfigurace repozitáře provádí generování _GitHub_ automaticky nebo jej můžeme provádět manuálně.
25 39 Lukáš Moučka
26 41 Lukáš Moučka
h3. Klasický web (blog)
27 39 Lukáš Moučka
28 78 Lukáš Moučka
Pro klasické blogování s _Jekyllem_ je nutné vlastnit domému a hosting. Na hostujícím serveru musí být nainstalován jen webový server (Apache, NGINX) – na hostingu je umístěn jen statický obsah, takže není potřeba databáze ani např. PHP (_Hypertext_ _Preprocessor_) server. Nástroj _Jekyll_ je nainstalováný na lokálním počítači včetně všech závislostí. Počítač generuje statický obsah, který je následně nahrán na hosting.
29 42 Lukáš Moučka
30
h4. Instalace
31 46 Lukáš Moučka
32 48 Lukáš Moučka
_Instalace je pro potřeby tohoto článku ve zjednodušené formě._
33 42 Lukáš Moučka
34 78 Lukáš Moučka
# *Instalace závislostí* – jako první nainstalujeme _Ruby_, protože je v něm _Jekyll_ napsaný. Dále nainstalujeme knihovny _gcc_, _gcc-c++_ a _zlib-devel_, protože některé závislosti z _Ruby_ se nestahují, ale kompilují.
35
# *Instalace Jekyllu* – necháme nainstalovat _Jekyll_ a po instalaci _Jekyllu_ jej necháme vygenerovat výchozí blog s výchozí šablonou.
36 1 Lukáš Moučka
37 81 Lukáš Moučka
Blog můžeme opět editovat a následně vygenerovaný statický obsah nahrávat na hosting.
38 51 Lukáš Moučka
39 52 Lukáš Moučka
h2. Vkládání příspěvků
40 51 Lukáš Moučka
41 83 Lukáš Moučka
Každý příspěvek je reprezentován jedním textovým souborem a _Jekyll_ obstará vše ostatní. Příspěvek je psán v markdown, který obsahuje stejné formátovací značky jako _GitHub_. Je možnost psát i v čistém HTML. Po vytvoření příspěvku (textového souboru) musí být umístěn do složky @_posts@. Název souboru musí mít tento formát: @ROK-MĚSÍC-DEN-NÁZEV_PŘÍSPĚVKU.MARKUP@.
42 53 Lukáš Moučka
43 84 Lukáš Moučka
Do příspěvku je možné vložit odkaz na jiný příspěvek pomocí _permalinku_ – nedochází ke kolizi URL (_Uniform_ _Resource_ _Locator_) adres při změně názvu příspěvku. Příspěvěk může obsahovat mediální obsah jako jsou obrázky a různé přílohy (PDF). Příspěvky je možné kategorizovat a dávat jim tagy (Definice se provádí v hlavičce příspěvku.). Pro dosud nepublikované příspěvky (rozpracované a připravené dopředu) slouží složka @drafts@. Jejich náhled je možný pouze na lokálním počítači.
44 55 Lukáš Moučka
45
h2. Šablonovací jazyk
46
47
Šablonovací jazyk _Liquid_ značně rozšiřuje možnosti příspěvků. Přidává možnost vypisovat proměnné, používat různé filtry, složitější formátování textu nebo používat logické formule. Může sloužit např. pro výpis příspěvků nebo kategorií.
48 57 Lukáš Moučka
49 56 Lukáš Moučka
!vypis-prispevku.jpg!
50 57 Lukáš Moučka
51 56 Lukáš Moučka
!vypis-kategorii.jpg!
52 68 Lukáš Moučka
53 73 Lukáš Moučka
h2. Úprava vzhledu
54
55 93 Lukáš Moučka
Pro _Jekyll_ lze nalézt velké množství přípravených šablon např. "zde":https://jekyllthemes.io/. Vzhled je dále možné přizpůsobit úpravou dané šablony nebo vytvořením vlastního vzhledu. Pro úpravy stylu lze použít CSS nebo preprocesor CSS jménem _Sass_, který je pro kodéry přívětivější a přináší další funkce do CSS (funkce, logické operace...).
56 73 Lukáš Moučka
57 68 Lukáš Moučka
h2. Shrnutí hlavních výhod
58
59 69 Lukáš Moučka
* web je možné vytvořit bez znalostí webových technologií (HTML, CSS, JS, PHP...)
60
* odpadají bezpečností hrozby, protože není přítomen backend webu
61
* ideální řešení pro weby, o které se "nechceme" starat
62
* k provozování je zapotřebí jen webový server
63
* v rámci _GitHubu_ není nutné vlastnit doménu ani mít zřízení hosting, resp. webový server
64 75 Lukáš Moučka
* může sloužit místo wiki stránek.
65 69 Lukáš Moučka
66
h2. Nevýhody
67
68
Nevýhody _Jekyllu_ se začnou projevovat ve chvíli, kdy je "ohýbán" pro účely, pro které nebyl vyvinut. Pro účely blogování nelze vytvořit/vložit diskuzní modul ani jiný formulářový prvek. Pro vytvoření dynamického obsahu je jedinou možností využití _Cronu_, který bude periodicky spouštět skript a generovat nový statický obsah. Nová data (např. RSS feed, Atom) lze načíst při generování pomocí _Ruby_.
69 71 Lukáš Moučka
70
h2. Další statické generátory
71
72 85 Lukáš Moučka
* *Hugo* – velmi podobný generátor jako je _Jekyll_, ale jádro generátoru je napsáno v _Go_
73 86 Lukáš Moučka
* *GatsbyJS* – je napsaný v _Node.js_ a používá dotazovací jazyk _GraphQL_ pro získávání dat.
74 75 Lukáš Moučka
75
h2. Ukázky projektů
76 76 Lukáš Moučka
77 87 Lukáš Moučka
_Jekyll_ je využíván i velkými společnostmi. Zde je několik velkých projektů, pro které byl využit:
78 75 Lukáš Moučka
* https://www.ubuntu.cz/
79
* https://developer.spotify.com/
80
* https://dev.twitch.tv/
81
* https://devices.netflix.com/en/
82
* https://rubyonrails.org/
83
84 95 Lukáš Moučka
!ubuntu.png!
85 94 Lukáš Moučka
86 93 Lukáš Moučka
Další projekty "zde":https://jekyllrb.com/showcase/.
87 77 Lukáš Moučka
88
h2. Zdroje
89
90
https://jekyllrb.com/
91
https://www.youtube.com/watch?v=heO7ePLCvPI
92
https://sass-lang.com/
93
https://gohugo.io/
94
https://www.gatsbyjs.org/