CategoryJade

NodeJS, ExpressJS, Jade a Session

Jade je super šablonovací jazyk. Pokud jste opravdu líný programátor, pak se vám bude líbit. Jeho asi největší výhodou je maximální úspornost. Vůbec se nepoužívají párovací tagy a celý kód je strukturovaný jen dle odsazení. Něco ala Python. Až si na to zvyknete, bude vám HTML opravdu vadit…

Jade template:

Kód je daleko skromnější a přitom daleko přehlednější…
A možná i díky tomu se dá do šablony lépe integrovat jakákoliv aplikační logika. Přímo na serveru můžete v šablonu ohýbat, modifikovat… Něco jako je celé PHP 🙂 A přitom jasně zůstává vaše NodeJS aplikace nad šablonou, které jen předáváte nějaka data a necháváte ji dál dělat co má. A to z ní děla další živý kus celé aplikace. Beze sporu výhoda, ať už si o aplikační logice v prezentační vrstvě myslíte cokoliv…

No a tady se do hry dotávájí sessions, proměnné jen mezi aplikací a konkrétním uživatelem vaší aplikace (webové stránky).
Ty se v NodeJS a ExpressJS asi nejčastěji řeší přes NPM balíček express-session a pak nějaký backend pro jejich ukládání, ale to nutně není podmínkou. Balíček se postará i o toto. Já tedy používám connect-redis, ale je na vás jak své session proměnné budete ukládat.

A teď se dostávám k tomu jak to celé funguje spolu dohromady.

NodeJS, ExpressJS, Jade, Session

Pokud už pracujete se sessions, pak k nim máte přístup v objektu request a to je vám v momentě. kdy už jste v prezentační fázi a pracujete s objektem response celkem k ničemu.
Řešení je nasnadě: proměnnou session umístit do datové struktury, kterou pak předáte funkci render, která se postará o vykreslení šablony:
NodeJS obsluha pro routu /

Super, tohle funguje, ale pokud furt něco renderujete a máte hafo šablon, pak je to vopruz…

Alternativní řešení pomocí middleware

Abych měl k proměnné session přísup v každé jade šabloně a nemusel ji pokaždé předávat přes slovník s proměnnými ve funkci render. Napsal jsem si jednouduchou middleware funkci, která je volána pro každé zpracování requestu:

Proměnná session je tak dosupná přímo v Jade šabloně jen pomocí svého jména, jako byste ji předaly v objektu ve funkci render.

Holla!

Middleware je docela silná stránka frameworku ExpressJS. Můžete si sami napsat vlastní celou rouru obslužných rutin, které se budou postupně provádět. V každéé z nich mlžete mít nějakou logiku, zpracování dat a podobně. Síla. Extrémně použitelné.

Jade, HTML template engine

Jade je vysoce výkonný HTML šablonovací engine vycházející z Haml implementovaný v JavaScriptu. Primárně je určen pro NodeJS server side šablonování. Jinými slovy vytváření HTML stránek na straně serveru (něco jako PHP).

Na první pohled významný rys je jeho vyjadřovací stručnost:

Výsledný HTML kód

Jak je vidět, pro HTML kód se nepoužívá parových značek, ale speciální syntaxe podobná Pythonu (osazování kódu). Není potřeba uzavíracích značek, kód se odsazuje a proto je zápis kratší, jednodušší a ve výsledku i bezpečnější. Nemusíte kontrolvat jestli jste zpárovali všechny tagy.

Další z jeho výhod je jeho dostupnost v mnoha programovacích jazycích. Podporuje jej jak NodeJS a Express, ale i Python a další.

Jade a NodeJS

jade

Jade je defaultní HTML template engine v Express, což je NodeJS webový framework.

Vkládání prostého textu

Pokud potřebujete např do odstavce vložit víceřádkový text, máte na výběr z několika možností jak to provést:

Vkládání id a tříd k tagům

Opravdu dynamické šablony

Do šablony jsou skrze JavaScript vložena data.

Smyčky a podmínky

Šablonu lze i řídit na základě podmínek a smyček

Komplexní layout

Výsledná HTML stránka nemusí být výsledkem jedné Jade šablony, ale můžete do ní vkládat další Jade šablony, nebo vytvářet celou strukturu stránek.

Několik základních odkazů

Language Reference
Tutorial
Jak začít

Web Development with Jade

© 2017 pepa.holla.cz

Theme by Anders NorénUp ↑