Projekt

Obecné

Profil

Jekyll » Historie » Verze 85

Lukáš Moučka, 2019-10-30 13:09

1 1 Lukáš Moučka
h1. Jekyll
2 2 Lukáš Moučka
3 64 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_.
4 11 Lukáš Moučka
5
h2. Případy užití
6 12 Lukáš Moučka
7 11 Lukáš Moučka
h3. GitHub Pages
8 12 Lukáš Moučka
9 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.
10 13 Lukáš Moučka
11 41 Lukáš Moučka
h4. Instalace
12 17 Lukáš Moučka
13 47 Lukáš Moučka
_Instalace je pro potřeby tohoto článku ve zjednodušené formě._
14 46 Lukáš Moučka
15 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.
16
# *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ě.
17 22 Lukáš Moučka
!klonovani-repozitare.jpg!
18 25 Lukáš Moučka
# *Vytvoření inicializačního souboru* – vstoupíme do složky s projektem a vytvoříme soubor @index.html@.
19 26 Lukáš Moučka
!vytvoreni-souboru-index.jpg!
20 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.
21 32 Lukáš Moučka
!nahrani-indexu.jpg!
22 36 Lukáš Moučka
23 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ě.
24 39 Lukáš Moučka
25 41 Lukáš Moučka
h3. Klasický web (blog)
26 39 Lukáš Moučka
27 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.
28 42 Lukáš Moučka
29
h4. Instalace
30 46 Lukáš Moučka
31 48 Lukáš Moučka
_Instalace je pro potřeby tohoto článku ve zjednodušené formě._
32 42 Lukáš Moučka
33 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í.
34
# *Instalace Jekyllu* – necháme nainstalovat _Jekyll_ a po instalaci _Jekyllu_ jej necháme vygenerovat výchozí blog s výchozí šablonou.
35 1 Lukáš Moučka
36 81 Lukáš Moučka
Blog můžeme opět editovat a následně vygenerovaný statický obsah nahrávat na hosting.
37 51 Lukáš Moučka
38 52 Lukáš Moučka
h2. Vkládání příspěvků
39 51 Lukáš Moučka
40 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@.
41 53 Lukáš Moučka
42 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.
43 55 Lukáš Moučka
44
h2. Šablonovací jazyk
45
46
Š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í.
47 57 Lukáš Moučka
48 56 Lukáš Moučka
!vypis-prispevku.jpg!
49 57 Lukáš Moučka
50 56 Lukáš Moučka
!vypis-kategorii.jpg!
51 68 Lukáš Moučka
52 73 Lukáš Moučka
h2. Úprava vzhledu
53
54 74 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...).
55 73 Lukáš Moučka
56 68 Lukáš Moučka
h2. Shrnutí hlavních výhod
57
58 69 Lukáš Moučka
* web je možné vytvořit bez znalostí webových technologií (HTML, CSS, JS, PHP...)
59
* odpadají bezpečností hrozby, protože není přítomen backend webu
60
* ideální řešení pro weby, o které se "nechceme" starat
61
* k provozování je zapotřebí jen webový server
62
* v rámci _GitHubu_ není nutné vlastnit doménu ani mít zřízení hosting, resp. webový server
63 75 Lukáš Moučka
* může sloužit místo wiki stránek.
64 69 Lukáš Moučka
65
h2. Nevýhody
66
67
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_.
68 71 Lukáš Moučka
69
h2. Další statické generátory
70
71 85 Lukáš Moučka
* *Hugo* – velmi podobný generátor jako je _Jekyll_, ale jádro generátoru je napsáno v _Go_
72 1 Lukáš Moučka
* *GatsbyJS* – je napsaný v _Node.js_ a používá dotazovací jazyk _GraphQL_ pro získání dat.
73 75 Lukáš Moučka
74
h2. Ukázky projektů
75 76 Lukáš Moučka
76 75 Lukáš Moučka
_Jekyll_ je využíván i velkými společnostmi. Zde je několik velkých projektů, pro které je využíván:
77
* https://www.ubuntu.cz/
78
* https://developer.spotify.com/
79
* https://dev.twitch.tv/
80
* https://devices.netflix.com/en/
81
* https://rubyonrails.org/
82
83
Další projekty zde https://jekyllrb.com/showcase/.
84 77 Lukáš Moučka
85
h2. Zdroje
86
87
https://jekyllrb.com/
88
https://www.youtube.com/watch?v=heO7ePLCvPI
89
https://sass-lang.com/
90
https://gohugo.io/
91
https://www.gatsbyjs.org/