Od roku 1995, kdy se JavaScript poprvé objevil, působil převážně jako programovací jazyk pro klientskou stranu webových stránek, tedy front-end. V počátcích si vysloužil pověst jazyka s omezenými schopnostmi v oblasti výkonu. Nicméně, od té doby se investovalo značné množství prostředků, času a úsilí do jeho vylepšení.
Tyto investice vedly k rozmachu populárních knihoven a frameworků postavených na tomto jazyce. Mezi nejznámější patří například jQuery, React, AngularJS, Vue a Node.js.
Co znamená Full Stack JavaScript?
Full stack JavaScript představuje přístup, kdy se JavaScript používá jak na frontendu, tak i na backendu aplikace. JavaScript je sice obecně známý díky svým knihovnám a frameworkům pro front-end, ale díky Node.js má nyní své místo i na serverové straně.
Ačkoli Node.js nebyl prvním pokusem o využití JavaScriptu na serveru, stal se tím nejúspěšnějším. Dnes je JavaScript na serveru v podstatě synonymem pro Node.js a JavaScript se tak stal full-stack programovacím jazykem se třemi velmi oblíbenými technologickými kombinacemi (stacky).
MERN Stack
JavaScript MERN stack je pravděpodobně nejpoužívanější kombinací technologií, která zahrnuje čtyři hlavní komponenty. Na frontendu těchto aplikací se používá knihovna React, oblíbená JavaScriptová knihovna od společnosti Facebook. Za svoji popularitu vděčí mnoha faktorům, včetně flexibility, optimalizace výkonu a rychlému přijetí velkými technologickými firmami.
Zbývající tři technologie tohoto stacku, tedy Node.js, Express a MongoDB, spolupracují na backendu.
Node.js, někdy také označovaný jako NodeJS, je více než jen framework. Jedná se o asynchronní běhové prostředí pro JavaScript, které pracuje na serverové straně aplikace a řídí konkrétní procesy. Vývojáři Node.js kladou velký důraz na neblokující I/O operace softwaru. Tato vlastnost dává Node.js výhodu oproti některým konkurentům, protože umožňuje vývoj aplikací bez obav ze zablokování.
Dalším klíčovým aspektem Node.js je jeho událostmi řízená architektura. To znamená, že pro svůj běh používá smyčku událostí, nikoli knihovnu. Tato smyčka událostí je zodpovědná za schopnost Node.js provádět neblokující I/O operace.
Express (někdy též Express.js) je framework pro Node.js, který umožňuje Node.js provádět specifické úlohy. Například Express hraje klíčovou roli ve způsobu, jakým Node.js zpracovává směrování v aplikaci, a tím zjednodušuje celý proces. Ve většině aplikací Node.js zpracovává Express veškeré HTTP požadavky.
MongoDB je systém pro správu databází typu NoSQL. Podobně jako Node.js, i MongoDB je průkopníkem ve svém oboru. Po dlouhou dobu bylo MongoDB synonymem pro NoSQL databáze. Vývojáři si oblíbili MongoDB pro jeho snadné použití a menší rigidnost ve srovnání s jeho protějšky SQL.
MEAN Stack
Hlavním rozdílem mezi stacky MEAN a MERN je technologie použitá na frontendu, kde v MEAN stacku figuruje Angular. Angular má za sebou komplikovanou historii. První verze Angularu (AngularJS) byla postavena výhradně na JavaScriptu. Nicméně současná podoba Angularu je platforma pro vývoj webových aplikací založená na TypeScriptu (což je nadmnožina JavaScriptu).
Angular je framework založený na komponentách, který poskytuje vestavěnou podporu pro základní mechanismy vývoje webu, jako je směrování. Navíc slouží i jako vývojová platforma, která nabízí pokročilé funkce, které by jinak bylo nutné získávat z externích knihoven nebo frameworků. Příkladem je nástroj pro internacionalizaci.
Tento nástroj usnadňuje lokalizaci aplikace tím, že extrahuje text pro překlad do různých jazyků. Podporuje překlady a umožňuje formátování dat na základě regionu uživatele. Na backendu stacku MEAN se používají technologie Node.js, Express a MongoDB.
MEVN Stack
Ačkoliv je MEVN stack mezi hlavními trojicemi JavaScriptových kombinací pravděpodobně nejméně populární, stále si udržuje silnou komunitu. MEVN stack se skládá z Node.js, Express, MongoDB a Vue.
Vue, též známý jako Vue.js, je JavaScriptový framework. Podobně jako React a Angular používá model založený na komponentách, který umožňuje vytvářet jednoduchá i složitá uživatelská rozhraní aplikací. Tento framework se vyznačuje dvěma základními vlastnostmi, a to deklarativním vykreslováním a reaktivitou.
Deklarativního vykreslování dosahuje Vue tak, že umožňuje popisovat výstup uživatelského rozhraní prostřednictvím stavu JavaScriptu. Stav JavaScriptu hraje důležitou roli i v reaktivitě, protože umožňuje aktualizovat DOM (Document Object Model), když dojde ke změnám.
Srovnání MERN, MEAN a MEVN
Srovnání mezi těmito třemi hlavními JavaScriptovými stacky se v podstatě zaměřuje na tři technologie používané na frontendu. Proto tabulka níže hodnotí stacky z hlediska React, Angular a Vue.
MERN | MEAN | MEVN | |
Křivka učení | React má poměrně mírnou křivku učení. | Angular má strmější křivku učení kvůli množství funkcí a používání TypeScriptu. | Vue je považován za přívětivější pro začátečníky než React, protože používá syntaxi šablon podobnou HTML, zatímco React používá JSX. |
Ekosystém |
|
|
|
Licence a komunita |
|
|
|
Flexibilita | React je velmi flexibilní, co se týče strukturování projektu a opětovného využití komponent. | Angular je striktnější v otázce struktury projektu díky mnoha vestavěným funkcím a konvencím. | Vue se nachází někde mezi Reactem a Angularem. Poskytuje velkou flexibilitu a zároveň nabízí konvence, pokud jsou potřeba. |
Bezpečnost | React neposkytuje žádné vestavěné bezpečnostní funkce. | Angular má vestavěnou bezpečnostní funkci, která pomáhá předcházet útokům cross-site scripting (XSS). | Vue má také vestavěnou bezpečnostní funkci, která pomáhá předcházet útokům XSS. |
Výkon vykreslování | React používá virtuální DOM (VDOM), což je kopie skutečného DOM. Když se změní stav aplikace, React vytvoří virtuální reprezentaci ve VDOM, která následně aktualizuje skutečný DOM v procesu zvaném odsouhlasení. Tento přístup minimalizuje skutečné manipulace s DOM (což je nákladná operace). | Angular používá mechanismus detekce změn, který monitoruje stav aplikace a aktualizuje DOM, když zjistí změny. | Vue kombinuje virtuální DOM a vlastní systém reaktivity. Tím dosahuje nejlepších výsledků z obou přístupů. |
Přístupnost | React nepodporuje přístupnost. | Angular má nástroje a funkce pro podporu přístupnosti. | Vue nepodporuje přístupnost. |
Výhody Full Stack JavaScriptu
Zjevnou výhodou full-stack JavaScriptu je snížení nároků na učení pro vývojáře, kteří jej chtějí používat pro full-stack vývoj. Je také ze své podstaty asynchronní, což umožňuje vyvíjet škálovatelnější aplikace. Co se týče výkonu, běhová prostředí JavaScriptu, a zejména Node.js, patří mezi nejlepší a poskytují efektivní zpracování na straně serveru.
Existuje však i významná nevýhoda full-stack JavaScriptu. Zatímco JavaScript na serveru vyniká jak v procesech vázaných na I/O, tak v procesech řízených událostmi, stále není ideální volbou pro úlohy náročné na výpočetní výkon, zejména pokud jsou k dispozici výkonnější jazyky jako Python a Java.