BlogAko som zanevrel na PHP a zamiloval si JavaScript a Meteor.js

Ako som zanevrel na PHP a zamiloval si JavaScript a Meteor.js

elfoslav

V roku 2012 som sa dal na dráhu freelance web developera. Už som vedel HTML, CSS a trochu PHP. PHP som sa naučil lepšie a chcel som sa naučiť niektorý z PHP frameworkov. Ako som sa dostal k JavaScriptu a Meteor.js?

Vývoj v PHP

Začal som so Symfony, no to bolo príliš komplexné a kým som sa dostal do polovice tutoriálu, Symfony ma omrzelo. Potom som skúsil Zend, ten vyzeral byť jednoduchší a dokázal som v ňom spraviť aj jednu aplikáciu. Ale stále to nebolo ono.

Ďalšiu aplikáciu som skúsil spraviť v Nette. Nette som si zamiloval, aj keď niektorým veciam poriadne nechápem doteraz. Podarilo sa mi zohnať zákazku v Nette. Bol to dosť veľký a rozbordelovaný 2 ročný projekt. Niekoľko dní som písal iba PHP kód. Potom som potreboval spraviť niečo na front-ende v JavaScripte/jQuery. A prišlo nemilé prekvapenie. Stringy v JavaScripte som sa pokúšal spájať operátorom .= namiesto +=. Môj mozog nedokázal prepnúť na inú syntax.

Ďalší problém nastal, keď som sa pokúšal Googliť JavaScript funkcie. Hľadal som ich pod názvom v akom boli v PHP, no v JavaScripte mali úplne iný názov. Chytal som sa za hlavu… takto to už ďalej nepôjde. Context switching je zlý. Na PHP som sa vykašlal a vyskúšal som Node.js.

Node.js

Vďaka Node.js je možné použíť JavaScript na serveri. Node.js samo o sebe nie je žiadna výhra, tak ako samotné PHP. No veľké veci sa dajú robiť s Node.js frameworkami. Vyskúšal som si Sails.js, Geddy.js, Tower.js no dokumentácia, funkcionalita a komunita boli celkom slabé. Express.js používa dosť ľudí a firiem, no je príliš jednoduchý a vývojár si musí dorobiť veľa vecí sám. Neskôr som narazil na Meteor.js. A zostal som v nemom úžase. Funkcionalita – real-time aplikácia na pár úderov do klávesnice. Dokumentácia dosť v pohode. A komunita Meteoru je jedna veľká rodina. Všetci sú z Meteoru nadšení, pretože nič podobné v živote nevideli.

Vývoj v JavaScripte

Vyvíjam čisto JavaScriptové aplikácie od konca roku 2013 a už nikdy by som sa k PHP nevrátil. Vývoj JavaScriptových aplikácií má nasledujúce výhody:

  • Už žiadny context switching medzi back-end jazykom a JavaScriptom.
  • Izomorfný kód – zdieľaný kód na klientovi aj na serveri – mega napríklad pri validácii dát z formulára.
  • Node.js môže byť výkonnejšie ako PHP.

Vývoj v Meteor.js

Meteor nie je iba Node.js framework. Je to platforma, ktorá zabezpečuje rýchly a pohodlný vývoj aplikácií a ich deploy. Meteor je full-stack, to znamená, že sa stará o client-side aj server-side časť aplikácie.

Tu sú výhody vývoja aplikácií v Meteore:

  • Produktivita – mám pocit, že vývoj aplikácií v Meteore je oveľa rýchlejší. Celú aplikáciu môžete písať v JavaScripte a takmer nie je vidieť rozdiel medzi server-side a client-side kódom.
  • Real-time – killer feature Meteoru. Keď zmeníte dáta v databázi na serveri, tieto zmeny sú automaticky odoslané ku všetkým pripojeným klientom. V iných frameworkoch by ste museli použiť websockety a písať extra kód na dosiahnutie rovnakej funkcionality.
  • MiniMongo – implementácia MongoDB na klientovi. Na klientovi môžete pracovať s kolekciami podobne ako na serveri.
  • Vlastné client-side technológie – nemusíte sa rozhodovať či použijete Angular, Ember, alebo niečo iné. Meteor má vlastné riešenie Blaze a Spacebars, ktoré sú oveľa jednoduchšie ako trebars Angular.
  • Balíčky (packages) – Meteor má vlastný balíčkovací systém. Balíčky sú umiestnené na Atmosphere. Možno sa pýtate prečo vymýšľať koleso, keď je tu NPM? Meteor balíčky sú izomorfné. To znamená, že môžu obsahovať jak klientský, tak serverový kód. A nie len JavaScript, ale aj HTML a CSS. Môžete tak jednoducho pridať napríklad balíček accounts-ui a máte hotové prihlasovanie a registráciu užívateľov. Pecka, nie? Ak niečo nenájdete na Atmosphere, môžete použiť aj NPM.
  • Jednoduchý deploy. Príkaz “meteor deploy appname” uploadne a spustí aplikáciu na subdoméne appname.meteor.com. Nepotrebujete ani vlastný server, aby ste mohli ukázať aplikáciu svetu. Meteor poskytuje hosting na subdoménach zdarma. Ak chcete deploynúť aplikáciu na vlastný server, použite meteor-up.
  • V Meteore je možné vyvíjať webové aj mobilné aplikácie zároveň.
  • Komunita – ako som už spomenul, komunita Meteoru je skvelá. Existuje Facebook skupina Learn MeteorJS properly. Sú tu Meteor geekovia Arunoda, Josh Owens ktorí prinášajú úžasné nástroje, články a tutoriály. Konajú sa Meteor meetupy po celom svete. Chodím na Meteor meetupy do Prahy. Meteor meetup môže zorganizovať každý. Rád by som videl Meteor meetup v Bratislave.

Ak robíte v PHP, Rails, či inej technológii, skúste si spraviť jednoduchú aplikáciu v Meteore. Možno vás osvieti a nové projekty začnete písať v Meteore. Na World wide Meteor day som sa spýtal jedného vývojára:

– Vy používate Meteor vo firme?

– Áno, nemáme čas vyvíjať aplikácie v PHP.

Myslím, že to hovorí za všetko.

Ale aby som len neospevoval Meteor, predstavím aj jeho temnejšie stránky:

  • Oficiálne podporuje iba MongoDB. Ak chcete použiť MySQL, alebo inú databázu, pravdepodobne nájdete balíčky, ktoré to umožňujú. No oficiálne riešenie pre podporu viacero databáz zatiaľ neexistuje.
  • Zatiaľ oficiálne nepodporuje Windows. Ale to nie je až taká nevýhoda, veď kto dnes vyvíja na Windowse… Ale povráva sa, že na podpore Windowsu sa pracuje.

Chcem sa naučiť Meteor. Ako na to?

Ak sa chceš naučiť tvoriť aplikácie v Meteore, stačí ti vedieť JavaScript, HTML a trochu CSS. Meteor primárne používa databázu MongoDB, takže ak vieš iba MySQL, bude treba si zvyknúť na Mongo. Môžeš začať oficiálnym tutoriálom na stránke Meteoru. Zdroje na učenie Meteoru sú väčšinou len v angličtine. Každý vývojár by mal vedieť anglicky. Ak nevieš angličtinu, môžeš sa ju začať učiť na helpforenglish.cz.

Self promo: vytvoril som video tutoriál “Build your first real-time application with Meteor.js” na Udemy. Za pol hodinku sa naučíš základy Meteoru a naprogramuješ jednoduchú chat aplikáciu. Čoskoro pribudnú pokročilé lekcie.

Common Meteor mistakes ti poradí čomu sa vyhnúť a čo robiť jednoduchšie.

Meteor má konečne svoje fórum, kde môžeš nájsť zaujímavé debaty, či rady.

Ďalšie zdroje o Meteore nájdeš v článku Best learning resources for Meteor.js. Ak stále nie si presvedčený o kvalitách a výhodách Meteoru, tak si prečítaj What is Meteor.js.

Hosting pre Meteor aplikácie

Na klasickom PHP hostingu Meteor aplikáciu nespustíte :-). Pre testovacie aplikácie vám stačí hosting, ktorý ponúka Meteor zdarma (meteor deploy appname). Pre produkčné aplikácie používam VPS od DigitalOcean (referal link, po zaregistrovaní dostaneš $10 kredit). DigitalOcean je podľa môjho názoru najkvalitnejší a najlacnejší hosting na svete, čo sa VPS týka. S Meteor up je inštalácia VPS a deploy aplikácie hračka.

JavaScriptové aplikácie – súčasnosť, či budúcnosť?

JavaScriptové aplikácie sú minulosť, súčasnosť aj budúcnosť. Už v roku 2013 vývojári a niektoré firmy pochopili, že vývoj JavaScriptových aplikácii môže ušetriť veľa času oproti vývoju aplikácii v PHP, či Rails. Poznám veľa prípadov, kde vývojári a firmy prešli z Rails na Meteor. V zahraničí sa ľudia neboja zmeny. Na Slovensku a v Česku sa ľudia ako keby boja JavaScriptu. Myslia si, že JavaScript je čierna mágia a treba sa mu za každú cenu vyhnúť. No JavaScriptu sa nevyhnete. JavaScript je tu s nami 20 rokov a ešte aspoň 5 – 10 rokov bude kým sa neuchytí niečo lepšie.

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.

Tomáš Hromník
Tomáš Hromníkhttp://hromnik.com
Všetko podstatné o mne je na webe http://hromnik.com alebo na Googli pod výrazom Elfoslav. V roku 2012 som začal vyvíjať PHP aplikácie. Koncom roku 2013 som prešiel z PHP na čisto JavaScriptové aplikácie (Express.js, Meteor.js). V roku 2014 som objavil silnú potrebu učiť a túto potrebu mám dodnes. Učím ľudí programovať a tvoriť webové/mobilné aplikácie v JavaScripte.

Čítaj ďalej: