Programování

Co je MEAN stack? JavaScript webové aplikace

Zásobník MEAN, definován

Zásobník MEAN je softwarový zásobník - tedy sada technologických vrstev, které tvoří moderní aplikaci - který je postaven výhradně v JavaScriptu. MEAN představuje příchod JavaScriptu jako jazyka „full-stack development“, který běží v aplikaci od frontendu k backendu. Každá z iniciál v MEAN znamená komponentu v zásobníku:

  • MongoDB: Databázový server, který je dotazován pomocí JSON (JavaScript Object Notation) a který ukládá datové struktury v binárním formátu JSON
  • Vyjádřit: Rámec JavaScriptu na straně serveru
  • Úhlové: Rámec JavaScriptu na straně klienta
  • Node.js: Modul runtime JavaScriptu

Velkou součástí přitažlivosti MEAN je konzistence, která vychází ze skutečnosti, že jde o JavaScript skrz naskrz. Život je pro vývojáře jednodušší, protože všechny komponenty aplikace - od objektů v databázi až po kód na straně klienta - jsou psány ve stejném jazyce.

Tato konzistence stojí v kontrastu s hodgepodge LAMP, dlouholeté základny vývojářů webových aplikací. Stejně jako MEAN je LAMP zkratka pro komponenty používané v zásobníku - Linux, HTTP server Apache, MySQL a buď PHP, Perl nebo Python. Každý kousek hromádky má málo společného s jakýmkoli jiným kouskem.

To neznamená, že zásobník LAMP je podřadný. Je stále široce používán a každý prvek v zásobníku stále těží z aktivní vývojové komunity. Ale koncepční konzistence, kterou MEAN poskytuje, je požehnáním. Pokud používáte stejný jazyk a mnoho stejných jazykových konceptů na všech úrovních zásobníku, bude pro vývojáře snazší zvládnout celý zásobník najednou.

Většina hromádek MEAN obsahuje všechny čtyři komponenty - databázi, přední část, zadní část a spouštěcí modul. To neznamená, že se zásobník skládá z pouze tyto prvky, ale tvoří jádro.

MongoDB

Stejně jako ostatní databázové systémy NoSQL používá MongoDB design bez schémat. Data se ukládají a načítají jako dokumenty ve formátu JSON, které mohou mít libovolný počet vnořených polí. Díky této flexibilitě je MongoDB vhodný pro rychlý vývoj aplikací při řešení rychle se měnících požadavků.

Používání MongoDB přichází s řadou upozornění. Pro jednoho má MongoDB ve výchozím nastavení pověst nejistoty. Pokud jej nasadíte v produkčním prostředí, musíte podniknout kroky k jeho zabezpečení. A pro vývojáře pocházející z relačních databází nebo dokonce z jiných systémů NoSQL budete muset věnovat nějaký čas seznámení s MongoDB a jak to funguje. Martin Heller se ponořil hluboko do recenze MongoDB 4, kde hovoří o interních aspektech MongoDB, dotazech a nevýhodách.

Stejně jako u jiných databázových řešení budete pro komunikaci mezi MongoDB a komponentami JavaScriptu potřebovat nějaký middleware. Jednou společnou volbou pro MEAN stack je Mongoose. Mongoose poskytuje nejen konektivitu, ale také modelování objektů, ověřování na straně aplikace a řadu dalších funkcí, s nimiž se nechcete obtěžovat při objevování každého nového projektu.

Express.js

Express je pravděpodobně nejpoužívanější rámec webových aplikací pro Node.js. Express poskytuje pouze malou sadu základních funkcí - je to v podstatě minimální programovatelný webový server - ale lze jej rozšířit pomocí zásuvných modulů. Tento design bez ozdůbek pomáhá udržovat Express lehký a výkonný.

Nic neříká, že aplikace MEAN se musí doručovat přímo uživatelům prostřednictvím Express, i když je to určitě běžný scénář. Alternativní architekturou je nasazení jiného webového serveru, jako je Nginx nebo Apache, před Express jako reverzní proxy. To umožňuje, aby byly funkce, jako je vyvažování zátěže, odloženy na samostatný zdroj.

Protože Express je záměrně minimální, nemá s ním spojenou mnoho koncepčních režií. Výukové programy na Expressjs.com vás mohou dostat od rychlého přehledu základních informací po připojení databází a dále.

Úhlové

Úhlová (dříve AngularJS) se používá k vytvoření frontendu pro MEAN aplikaci. Angular používá JavaScript prohlížeče k formátování dat poskytovaných serverem v šablonách HTML, takže většinu práce s vykreslením webové stránky lze klientovi odložit. Mnoho jednostránkových webových aplikací je vytvořeno pomocí rozhraní Angular na přední straně.

Jedna důležitá poznámka: Vývojáři spolupracují s Angular psaním v jazyce TypeScript, což je jazyk typu JavaScript, který se kompiluje do JavaScriptu. Pro některé lidi je to porušení jednoho z hlavních konceptů zásobníku MEAN - že JavaScript se používá všude a výhradně. TypeScript je však blízký příbuzný JavaScriptu, takže přechod mezi těmito dvěma není tak nepříjemný, jako by to bylo v jiných jazycích.

Pro hluboký ponor do Angular vás pokryje Martin Heller. Ve svém výukovém programu Angular vás provede vytvořením moderní webové aplikace Angular.

Node.js

V neposlední řadě je tu Node.js - běhové prostředí JavaScriptu, které pohání serverovou stránku webové aplikace MEAN. Uzel je založen na enginu JavaScript V8 společnosti Google, což je stejný engine JavaScriptu, který běží ve webovém prohlížeči Chrome. Uzel je multiplatformní, běží na serverech i klientech a má určité výkonnostní výhody oproti tradičním webovým serverům, jako je Apache.

Node.js používá k poskytování webových požadavků jiný přístup než tradiční webové servery. V tradičním přístupu se na serveru objeví nové vlákno provádění nebo dokonce forks nový proces pro zpracování požadavku. Vytváření vláken je efektivnější než procesy rozvětvování, ale oba zahrnují velkou část režie. Velké množství podprocesů může způsobit, že silně načtený systém stráví drahocenné cykly plánováním podprocesů a přepínáním kontextu, přidává latenci a ukládá limity škálovatelnosti a propustnosti.

Node.js je mnohem efektivnější. Uzel spustí smyčku události s jedním vláknem registrovanou v systému pro zpracování připojení a každé nové připojení způsobí spuštění funkce zpětného volání JavaScriptu. Funkce zpětného volání dokáže zpracovat požadavky s neblokujícími I / O voláními a v případě potřeby může vytvořit vlákna z fondu, aby provedla blokování nebo operace náročné na CPU a vyvážila zatížení mezi jádry CPU.

Node.js vyžaduje méně paměti pro zvládnutí více připojení než většina konkurenčních architektur, které se škálovají pomocí vláken - včetně Apache HTTP Server, ASP.NET, Ruby on Rails a aplikačních serverů Java. Node se tak stal nesmírně populární volbou pro vytváření webových serverů, rozhraní REST API a aplikací v reálném čase, jako jsou chatovací aplikace a hry. Pokud existuje jedna komponenta, která definuje MEAN stack, je to Node.js.

Úvod do Node.js viz vysvětlující Martin Heller. Chcete-li začít vyvíjet s Node, podívejte se na jeho tutoriál Node.js.

Výhody a výhody zásobníku MEAN 

Tyto čtyři komponenty fungující v tandemu nejsou řešením každého problému, ale v současném vývoji si určitě našli mezeru. IBM rozebere oblasti, kde zásobník MEAN odpovídá faktuře. Protože je škálovatelný a dokáže zpracovat velký počet uživatelů současně, je MEAN stack obzvláště dobrou volbou pro cloudové nativní aplikace. Úhlová přední část je také skvělou volbou pro jednostránkové aplikace. Mezi příklady patří:

  • Aplikace pro sledování výdajů
  • Weby agregující novinky
  • Mapovací a lokalizační aplikace

MEAN vs. MERN

Zkratka „MERN“ se někdy používá k popisu MEAN stacků, které místo Angular používají React.js. React je framework, nikoli plnohodnotná knihovna, jako je Angular, a tam jsou plusy a minusy pro výměnu React do zásobníku založeného na JavaScriptu. Stručně řečeno, React je snadnější se naučit a většina vývojářů může psát a testovat React kód rychleji, než mohou psát a testovat plnohodnotnou Angular aplikaci. React také produkuje lepší mobilní rozhraní. Na druhou stranu je úhlový kód stabilnější, čistší a výkonnější. Obecně je Angular volbou pro vývoj na podnikové úrovni.

Samotný fakt, že máte tuto volbu k dispozici, však ukazuje, že MEAN není pro vývojáře omezenou svěrací kazajkou. Nejen, že můžete vyměnit různé komponenty za jednu z kanonických čtyř vrstev; můžete také přidat doplňkové komponenty. Například systémy pro ukládání do mezipaměti, jako je Redis nebo Memcached, lze v Express použít k urychlení odpovědí na požadavky.

MEAN vývojáři zásobníku

Mít dovednosti být vývojářem zásobníku MEAN v zásadě znamená stát se vývojářem celého zásobníku se zaměřením na konkrétní sadu nástrojů JavaScriptu, o které jsme zde hovořili. Popularita zásobníku MEAN však znamená, že mnoho pracovních inzerátů bude zaměřeno na vývojáře s plným zásobníkem se specifickými dovednostmi MEAN. Guru99 rozbíjí předpoklady pro zachycení jedné z těchto úloh. Kromě znalostí základních komponent MEAN stacku by měl vývojář MEAN stacku dobře rozumět:

  • Front-end a back-end procesy
  • HTML a CSS
  • Pokyny pro programování šablon a návrh architektury
  • Webový vývoj, nepřetržitá integrace a cloudové technologie
  • Architektura databáze
  • Životní cyklus vývoje softwaru (SDLC) a jaké to je vyvíjet se v agilním prostředí

Jaký je plat vývojáře zásobníku MEAN? I když vždy existuje řada založená na zkušenostech a zaměstnavateli, je to určitě lukrativní obor. Od prosince 2019 společnost Neuvoo.com uvádí, že střední plat, který vývojář MEAN stacku může očekávat, je přibližně 125 000 USD ročně. Stránka Indeed.com spojuje vývojáře MEAN stacků s vývojáři full-stack obecněji a fixuje typický roční plat kolem 112 000 $.

MEAN stack tutorials

Vyhovují vám technické základy a jste připraveni se ponořit a naučit se MEAN stack? Existuje řada bezplatných návodů, které vám mohou pomoci začít. Web Úhlové šablony má obzvláště důkladný výukový program, který vás provede procesem vytváření jednoduchého webu pomocí zásobníku MEAN. TutorialsPoint má dobrého průvodce vytvořením jednostránkové webové aplikace s MEAN stackem. Užijte si špinavé ruce a hodně štěstí!