Začíname s Node.js: Voľba Frameworku

Keď už raz viete celkom obstojne programovať v nejakom jazyku, po prechode na iný jazyk “vyžadujete” aspoň podobný komfort. Dlho som vyvíjal v PHP. Používal som CodeIgniter s ORM. Keď som začal pracovať s Node, hľadal som niečo podobné. Nemal som čas a ani chuť si to písať sám – radšej som sa pozrel nato, čo ponúkajú ostatní – tí, čo robia v Node dlhšie.

Express.js

Express je snáď základný pilier celého vývoja webu v Node. Je to minimalistický framework a myslím, že nebudem preháňať ak poviem, že najpoužívanejší. Rozhodne odporúčam prečítať základy, porozumieť, ako funguje, pretože na ňom stavajú ďalšie frameworky. A práve tie ďalšie frameworky sú zaujímavé.

Sails.js

Sails.js vychádza z Expressu a bol to môj výber číslo jedna. Bol som z neho nadšený, pretože mal ORM, mal štruktúru priečinkov, tým, že od základu podporoval CRUD som vedel veľmi rýchlo vytvárať nové modely/controllery a naplniť ich dátami a v neposlednom rade sa mi páčila práca so socketami. Časom som však narážal na problém nedostatočnej alebo neexistujúcej dokumentácie. Sails využíva vlastné ORM – Waterline, ale nevedel som nikde nájsť ako do neho vložiť podobjekty, takže som ho musel prestať využívať a moje dáta teda pri ukladaní neboli validované. Ďalej som narazil na problém so socketmi – hoc sú v Sails zapracované vynikajúco, kým sa ich naučíte používať bude to stáť veľa snaženia a skúšania, hľadania a čítania. Mojím ďalším problémom bolo debugovanie. Vypisovať si všetko do konzoly, nepatrí medzi tie najlepšie spôsoby debugovania, ale dá sa to zvládnuť, dokým nepotrebujete analyzovať väčšie výpisy – veľké štruktúry. Keď sa to stane, opýtate sa – nejde to lepšie? Samozrejme, že ide! Ale nie so Sails. Hovorím konkrétne o riešení node-inspector, ktoré som ani napriek zisťovaniu čísel portov nemohol spojazdniť. Takže problémy sa nahromadili a ja som si povedal, že kým Sails sa mi páči, potrebuje nejaký čas, aby sa dopísala dokumentácia a vyriešili problémy. Dovtedy využijem iný framework.

Kraken.js

Prešiel som na Kraken. Kraken vytvoril tím, pracujúci v PayPal (alebo eBay). Povedal som si, že títo páni potrebujú stabilné, bezpečné a rýchle prostredie pre tvorenie aplikácií, rovnako ako ja, a majú prostriedky na jeho vytvorenie, tak prečo to nevyužiť? V prvom rade Kraken sa miestami nazýva frameworkom ale miestami prizná farbu – že on vlastne tak úplne framework nie je, je to trošku vylepšený Express. Kraken sa mi tiež zapáčil. Vyriešil problémy, ktoré som mal so Sails. Mongoose aj napriek tomu, že ocenenie za najlepšiu dokumentáciu nezíska, je dostatočne intuitívny. Moje dáta konečne boli 100% validované. Tak isto som (aspoň pocitovo) získal väčší priestor pre testovanie (rozumej unit testy, automatizované testy). Mal som spočiatku problém, ako otestovať jednotlivé modely, ale netrvalo dlho a vyriešil som ho (návod hodím najbližšie). Nakoniec, a čo ma veľmi potešilo bola možnosť konečne využiť node-inspector, takže konečne som mohol začať dobre debugovať. Po čase som však začal narážať aj na tienisté stránky. Kraken je dosť nízko položený, chcem tým povedať, že poskytuje základ, a keď chcete niečo naviac, tak si to musíte dorobiť sami. Sails podporoval písanie zdrojakov v CoffeeScripte. Kraken nie. Sails aj napriek biednej dokumentácií mal vynikajúcu podporu pre Socket.IO. Kraken nie, popravde, nenájdete o tom veľa návodov – ak vôbec nejaký a rozbehať to je naozaj problém. Všetky tieto veci minimálne spomaľujú vývoj, ale je to cena, ktorú treba zaplatiť za používanie Krakenu. Zatiaľ pri ňom ostávam a v ďalších blogoch sa budem venovať riešeniu týchto problémov.

Zhrnutie

V tomto krátkom blogposte, som sa zameral na Sails.js a Kraken.js. Bolo by nefér rozoberať iné frameworky – nemám s nimi skúsenosti, stručne som si nimi prešiel, keď som hľadal ideálny.

Zoznam väčšiny Node.js frameworkov: http://nodeframework.com/

Express.js: http://expressjs.com/
Sails.js: http://sailsjs.org/
Kraken.js: http://krakenjs.com/

Pridaj komentár

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>