Jekyll – generowanie statycznych stron HTML

Nie, w dzisiejszym wpisie nie chcę Wam opowiedzieć o londyńskim lekarzu zamieniającym się nocą w potwora. Będzie standardowo, czyli o sprawach powiązanych z webmasterką.

Krótki akapit wstępu, bo większość z Was prawdopodobnie nie zna wspomnianego skryptu. Otóż Jekyll jest to narzędzie, które pozwala wygenerować statyczną stronę na podstawie dostarczonych plików. Można to nawet nazwać CMS-em, bo w pewien sposób umożliwia zarządzanie treścią, jednak w sposób odmienny od większości systemów tego typu. Tak jak wspomniałem wcześniej, Jekyll bazuje na plikach utworzonych przez webmastera. Składają się na nie:

  • Szablony - pliki HTML, które definiują układ i kod strony. Tak jak we wszystkich innych skryptach, zawierają one zmienne, pod które będą podstawiane odpowiednie wartości: np. tytuł strony, czy jej treść
  • Pliki z treścią - tutaj rozróżnić możemy wpisy oraz normalne podstrony
  • Pliki nie parsowane - takie jak pliki CSS czy obrazki

Jekyll sparsuje otrzymane pliki i wyrzuci nam całą strukturę statycznych plików, które wrzucamy na serwer i mamy naszą stronę. Odmienia to trochę podejście do tworzenia witryn. Zamiast dynamiki nadawanej za pomocą języków działających po stronie serwera, całą stronę generujemy u siebie na komputerze, a na serwerze trzymamy statyczną witrynę wspieraną co najwyżej przez technologie client-side takie jak JavaScirpt.

Może wydawać się, że takie rozwiązanie to cofnięcie się do średniowiecza, w końcu Web 2.0, to coraz bardziej interaktywne strony internetowe. Z drugiej strony użycie Jekylla pozwala się nam skupić na tworzeniu treści, nie martwiąc się o inne kwestie. Po prostu piszemy treść w naszym ulubionym formacie (takim jak Markdown), a potem wydajemy jedną komendę i mamy gotowego bloga, który w dodatku do działania nie wymaga żadnego specjalnego serwera, bo wystarczy serwowanie odwiedzającym statycznych plików.

Drugą cechą stojącą za rosnącą popularnością tego rozwiązania w ostatnim czasie, jest fakt iż Jeykyll jest automatycznie zintegrowany z GitHub Pages. Jeżeli ktoś nie wie co to, to już spieszę z tłumaczeniem. Jest to metoda serwowania strony WWW przetrzymywanej w systemie kontroli wersji git. Przyznacie, że brzmi to bardzo wygodnie - całość witryny trzymana jest na GitHubie dzięki czemu mamy dokładną kontrolę nad wszelkimi wprowadzanymi zmianami, a Jekyll "magicznie" generuje bloga/stronę na podstawie dostarczonych plików.

Sam myślałem nad zastosowaniem tego hipsterskiego podejścia u siebie na stronie, jednak przeważyło moje przywiązanie do klasycznej dynamiki stron WWW. W momencie kiedy do strony obsługiwanej przez Jekylla trzeba dodać podstawowe elementy interakcji z użytkownikiem, zaczyna się naprawdę mocne kombinowanie. Poza tym nie znam w ogóle Ruby, w którym został napisany Jekyll i wszelkie modyfikacje przychodziły by mi z trudem.

Zaprezentowany skrypt nie jest oczywiście jedynym tego typu. Ze względu na popularność opisanego podejścia, powstały podobnie działające rozwiązania dla wielu innych języków. Z tych napisanych w PHP można wymienić między innymi Phrozn czy PieCrust. Pewne podsumowanie najpopularniejszych static generatorów zawiera strona StaticGen.com.

Co sądzicie o takim, jakby nie patrzeć mocno odmienionym podejściu do tworzeniu blogów. Interesowaliście się kiedyś takimi rozwiązaniami?

9 komentarzy do “Jekyll – generowanie statycznych stron HTML

  1. audycja zawiera lokowanie produktu

    Dobry SSG jest znacznie wygodniejszy, szybszy i tańszy niż WordPress. Ale generator w PHP nie ma sensu (bo i tak nikt nie używa PHP w linii komend). Osobiście polecam (i co-developuję — patrz paragraf wyżej) Nikola* (w Pythonie).

    jednak przeważyło moje przywiązanie do klasycznej dynamiki stron WWW. W momencie kiedy do strony obsługiwanej przez Jekylla trzeba dodać podstawowe elementy interakcji z użytkownikiem, zaczyna się naprawdę mocne kombinowanie.

    komentarze via DISQUS. tyle. ewentualnie jakiś mikro-formularz kontaktowy, nawet w PHP.

    Poza tym nie znam w ogóle Ruby, w którym został napisany Jekyll i wszelkie modyfikacje przychodziły by mi z trudem.

    Ruby nie jest taki trudny, (a Python jeszcze łatwiejszy) ale w obu bardzo rzadko trzeba modyfikować kod (wystarczą szablony). A nawet jeśli, to (w Nikoli) otworzyć Issue i ktoś inny się tym zajmie.

    * nazwa od Nikoli Tesli♂.

    audycja zawierała lokowanie produktu

    • Sobak pisze:

      Dzięki za odpowiedź, w sumie teraz sobie przypominam, że to u Ciebie na stronie po raz pierwszy spotkałem się z SSG nie wiedząc co to w zasadzie jest (chyba wtedy był Jekyll, prawda?).

      Kwestię dynamizacji pewnych obszarów strony potraktowałem w sumie z zapasem – potrafię mieć różne dziwne pomysły i bałem się sytuacji gdy będę musiał z nich zrezygnować lub poważnie zmienić oprogramowanie.

      Co do PHP to trafna uwaga, tutaj problemem nie było postawienie środowiska w Ruby tylko sama (nie)znajomość języka. Patrząc pobieżnie, mimo że Ruby i Python są w miarę zbliżone składnią, to ten pierwszy mi się wybitnie nie podoba, a drugi już tak. Po prostu będę musiał kiedyś spróbować Pythona, choć tu ciężko z hostingiem (u siebie mam mod_passengera, więc Ruby bym nawet odpalił).

      • 1. 2010-12…2011-10 — Jekyll, 2011-10…2013-02 — Hyde (brzydki i dysfunkcjonalny klon Jekylla w Pythonie), 2013-02…teraz — Nikola.
        2. „zdynamizowanie” można prosto załatwić przez PHP albo JS.
        3. Stron statycznych nie buduje się na serwerze (no chyba że masz dostęp po ssh), tylko na lokalnym komputerze i uploaduje się pliki na serwer.

    • pomek pisze:

      „bo i tak nikt nie używa PHP w linii komend” – pozwolę się nie zgodzić. wygląda na to, że „nikt” nie umie wykorzystać PHP w taki sposób, aby linia komend była również plusem tego języka.

      Nie argumentuję, bo z Pańskiej strony również argumentów brakło.

  2. Poprę Kwpolska – SSG w niektórych rozwiązaniach jest po prostu lepszy.
    Sam korzystam z autorskiego rozwiązania na Comandeerowej Domowej, napisanego w node.js (na gh jest wersja light).
    Co do braku Ruby na serwerze – a kto ci to każe składać na serwie? ;) równie dobrze można puścić builda na lokalu i jedynie zuploadować wygenerowane pliki.
    Co do komentarzy – Disqus. Outsourcing dobra rzecz ;)

  3. Sobak pisze:

    Naprostuję jedną rzecz, bo faktycznie mogłem trochę namotać w komentarzu. Nie zamierzałem i nie zamierzam budować tego na serwerze na którym to hostuję, zresztą w samym wpisie napisałem, że wystarczy na dobrą sprawę serwer zdolny serwować statyczne pliki.

    Patrząc pobieżnie, mimo że Ruby i Python są w miarę zbliżone składnią, to ten pierwszy mi się wybitnie nie podoba, a drugi już tak. Po prostu będę musiał kiedyś spróbować Pythona, choć tu ciężko z hostingiem (u siebie mam mod_passengera, więc Ruby bym nawet odpalił).

    To w sumie był offtopic wychodzący poza temat Jekylla/SSG. Po prostu nie podoba mi się Ruby, a chciałbym kiedyś pobawić się z napisaniem czegoś w Pythonie.

    @Comandeer: Twój site-generator znam, też kawał fajnej roboty. Z ciekawości: czym różni się wersja light od pełnej? Do outsourcingu w postaci Disqusa chyba się prędko nie przekonam, choć to raczej irracjonalna fobia.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *