Osobní stránky

Proč se zajímat o Meteor JS

Meteor je moderní JavaScriptová platforma, která je určena pro rychlou tvorbu interaktivních aplikací, jako jsou online diskuse, hry soutěže a další. V tomto článku představím hlavní přednosti Meteoru a popíši, na jaké aplikace se Meteor hodí a z jakého důvodu se o něj začít zajímat.

Vývoj Meteoru započal v roce 2011 a na podzim roku 2014 vyšla první stabilní verze nesoucí označení 1.0. Má tedy za sebou poměrně dlouhou cestu a využívají ho v produkci i rozsáhlejší projekty. Zároveň postupně vzrůstá popularita Meteoru s tím, jak jsou přidávány nové funkce a používá ho čím dál tím více programátorů.

meteor

Technický popis

Meteor, někdy označován také jako Meteor JS, je open-source webová platforma napsaná v jazyce JavaScript a využívající NoSQL databázi Mongo DB. Celý kód je veřejně dostupný na Githubu: https://github.com/meteor/meteor.

Aplikace můžete psát v JavaScriptu či v jakémkoli programovacím jazce, který se do něj kompiluje, tedy například: CofeeScript, TypeScript, apod. Meteor poskytuje základ pro rychlé vytváření interaktivních webových aplikací.

Hlavním rozdílem oproti ostatním webovým projektům je to, jak Meteor pracuje s načtenou webovou stránkou. U běžných webových aplikací se nejdříve odešle celá webová stránka do internetového prohlížeče a pokud se změní data na serveru od jiného uživatele (například někdo přidá zprávu do chatu), tak se klient musí dotazovat serveru, zda se data změnila (takzvaný pull model). Kdežto Meteor funguje naopak. Pokud dojde ke změně dat na serveru, tak server automaticky rozešle změny na všechny připojené klienty (takzvaný push model).

Díky tomu, lze pomocí Meteoru psát takzvané isomorfní aplikace. To znamená, že můžete používat stejný kód na serverové (backend) i klientské straně (frontend). To se hodí především pokud používáte stejný kód pro validace, entity a podobně.

Synchronizace probíhá pomocí webových socketů (web sockets), které umožňují obousměrnou komunikaci mezi klientem a serverem. Komunikace funguje tak, že se na začátku naváže trvalé spojení a veškerá data se pak posílají skrz tento socket. Při HTTP komunikaci se musí vždy navázat nové spojení.

Další zajímavostí Meteoru je, že můžete používat stejné databázové operace na klientovi i na serveru. Meteor obsahuje minimongo, což je reimplementace Mongo DB databáze pro použití v prohlížečích. Meteor se postará o všechny synchronizační problémy mezi klienty a serverem. Výhodou je především rychlá odezva pro uživatele, protože se data ukládají ihned lokálně. Nemusí se tak čekat až na odpověď od serveru a na případné problémy se reaguje až pokud synchronizace selže.

Kvůli bezpečnosti lze nastavit i možnost, aby provádění jakékoli akce probíhalo pouze na serveru a výsledek se pošle klientovi.

Pomocí meteoru lze vytvářet i mobilní aplikace pro Android nebo iOS. Meteor využívá platformu Phonegap, která umožňuje běh webových aplikací na mobilních zařízeních.

Podrobnou dokumentaci lze nalézt na webové stránce docs.meteor.com.

Ekosystém

Pro Meteor existuje velké množství balíků, které můžete přidat do aplikace a urychlit tak vývoj základních funkcionalit. Struktura balíků pro Meteor je odlišná od klasických JavaScriptových npm balíků, protože může obsahovat část pro klienta i pro server podle předem dané struktury. Seznam dostupných balíků lze najít na atmospherejs.com.

Hlavními výhodami Meteoru je rychlost a jednoduchost s jakou lze vytvářet interaktivní aplikace. Pokud byste chtěli vytvořit platformu, stejnou jako Meteor, bylo by potřeba zkombinovat dohromady několik knihoven. Konkrétně například Express, Mongoose, Socket IO, Angular, Karma, Grunt nebo Gulp, Cordova a další). Meteor obsahuje vše co tyto knihovny dohromady.

Existuje několik zajímavých open source projektů napsaných v Meteoru, které skvěle slouží jako studijní materiály a ukázky reálných aplikací.

Nejzajímavější takovou aplikací je pravděpodobně Telescope. Jedná se o klon stránek jako jsou Hacker News, Reddit či Product Hunt. Demo i zdrojové kódy jsou k dispozici na oficiálních stránkách: telescopeapp.org.

Zajímavá je také open source kopie známé aplikace pro organizaci úkolů s názvem Trello v Meteor JS: https://github.com/libreboard/libreboard/.

Další aplikace napsané za použití Meteoru jsou k nalezení na madewith.meteor.com.

Meteor využívá možnosti moderních webových prohlížečů k tomu, aby mohlo být mnohem jednodušší a rychlejší vytvořit interaktivní webové aplikace. Určitě bude zajímavé sledovat, kam bude v budoucnu směřovat vývoj Meteoru a jaké nové zajímavé projekty vzniknou.

Jakub Škvára


Jakub je cestovatel, blogger a webový vývojář. Zajímá se především o technické novinky a rád navštěvuje konference. Používá: Symfony2 Framework, AngularJS, NodeJS, MongoDB a další moderní technologie. Aktuálně žije v Londýně.