Programovanie

Čo je zásobník MEAN? JavaScriptové webové aplikácie

Zásobník MEAN, definovaný

Zásobník MEAN je softvérový balík, to znamená súbor technologických vrstiev, ktoré tvoria modernú aplikáciu, ktorý je zostavený výhradne v JavaScripte. MEAN predstavuje príchod JavaScriptu ako jazyka „full-stack development“, ktorý prevádzkuje všetko v aplikácii od frontendu po backend. Každá z iniciálok v MEAN predstavuje komponentu v zásobníku:

  • MongoDB: Databázový server, na ktorý sa dopytuje pomocou JSON (JavaScript Object Notation) a ktorý ukladá dátové štruktúry v binárnom formáte JSON
  • Expresné: Rámec JavaScriptu na strane servera
  • Uhlové: Rámec JavaScriptu na strane klienta
  • Node.js: Runtime JavaScriptu

Veľkou časťou príťažlivosti MEAN je konzistencia, ktorá vychádza z faktu, že ide o JavaScript cez celý formát. Život vývojárov je jednoduchší, pretože všetky súčasti aplikácie - od objektov v databáze po kód na strane klienta - sú napísané v rovnakom jazyku.

Táto konzistencia stojí v kontraste s mihalnicou LAMP, dlhoročnou základňou vývojárov webových aplikácií. Rovnako ako MEAN, aj LAMP je skratka pre komponenty použité v zásobníku - Linux, Apache HTTP Server, MySQL a PHP, Perl alebo Python. Každý kúsok komína má málo spoločného s akýmkoľvek iným kúskom.

To neznamená, že zásobník LAMP je horší. Je stále široko používaný a každý prvok v zásobníku stále ťaží z aktívnej vývojovej komunity. Ale koncepčná konzistencia, ktorú poskytuje MEAN, je prínosom. Ak používate rovnaký jazyk a veľa rovnakých jazykových konceptov na všetkých úrovniach zásobníka, vývojárom bude ľahšie zvládnuť celý zásobník naraz.

Väčšina zásobníkov MEAN obsahuje všetky štyri komponenty - databázu, front-end, back-end a procesor. To neznamená, že zásobník sa skladá z iba tieto prvky, ale tvoria jadro.

MongoDB

Rovnako ako iné databázové systémy NoSQL, aj MongoDB používa bezchématický dizajn. Dáta sa ukladajú a načítajú ako dokumenty vo formáte JSON, ktoré môžu obsahovať ľubovoľný počet vnorených polí. Vďaka tejto flexibilite je MongoDB vhodný na rýchly vývoj aplikácií pri riešení rýchlo sa meniacich požiadaviek.

Používanie MongoDB prináša množstvo upozornení. Po prvé, MongoDB má v predvolenom nastavení reputáciu neistoty. Ak ho nasadíte v produkčnom prostredí, musíte podniknúť kroky na jeho zabezpečenie. A pre vývojárov pochádzajúcich z relačných databáz alebo dokonca z iných systémov NoSQL budete musieť nejaký čas venovať spoznávaniu MongoDB a jeho fungovaniu. Martin Heller sa ponoril hlboko do recenzie MongoDB 4, kde hovorí o interných aspektoch MongoDB, dotazoch a nevýhodách.

Rovnako ako v prípade každého iného databázového riešenia, budete na komunikáciu medzi servermi MongoDB a JavaScript vyžadovať nejaký middleware. Spoločnou voľbou pre zásobník MEAN je Mongoose. Mongoose poskytuje nielen konektivitu, ale aj modelovanie objektov, overovanie na strane aplikácie a množstvo ďalších funkcií, s ktorými si nemusíte robiť starosti s objavovaním každého nového projektu.

Express.js

Express je pravdepodobne najbežnejšie používaný rámec webových aplikácií pre Node.js. Express poskytuje iba malú skupinu základných funkcií - je to v podstate minimálny programovateľný webový server - ale je možné ho rozšíriť pomocou doplnkov. Tento dizajn bez ozdôb pomáha udržiavať Express ľahký a výkonný.

Nič nehovorí, že aplikácia MEAN sa musí doručovať priamo používateľom prostredníctvom služby Express, aj keď je to určite bežný scenár. Alternatívnou architektúrou je nasadenie iného webového servera, napríklad Nginx alebo Apache, pred Express ako reverzný proxy server. To umožňuje, aby sa funkcie ako vyvažovanie záťaže vyložili na samostatný zdroj.

Pretože Express je zámerne minimálny, nemá s ním spojenú veľkú koncepčnú réžiu. Výukové programy na Expressjs.com vás môžu dostať od rýchleho prehľadu základných informácií až po pripojenie databáz a ďalších.

Uhlové

Angular (predtým AngularJS) sa používa na vytvorenie klientskeho rozhrania pre aplikáciu MEAN. Angular používa JavaScript prehliadača na formátovanie údajov poskytovaných serverom v šablónach HTML, takže veľkú časť práce s vykreslením webovej stránky je možné preniesť na klienta. Mnoho jednostránkových webových aplikácií je vytvorených pomocou rozhrania Angular na prednej strane.

Jedna dôležitá poznámka: Vývojári v spoločnosti Angular pracujú tak, že píšu v jazyku TypeScript, jazyku napísanom ako JavaScript, ktorý sa kompiluje s jazykom JavaScript. Pre niektorých ľudí je to porušenie jedného z hlavných konceptov stohu MEAN - to, že JavaScript sa používa všade a výlučne. TypeScript je však príbuzným JavaScriptu, takže prechod medzi nimi nie je taký nepríjemný ako v iných jazykoch.

Ak sa chcete hlboko ponoriť do Angular, je tu Martin Heller. Vo svojom tutoriáli Angular vás prevedie vytvorením modernej webovej aplikácie Angular.

Node.js

V neposlednom rade je tu Node.js - runtime JavaScript, ktorý napája webovú aplikáciu MEAN na strane servera. Uzol je založený na stroji JavaScript V8 spoločnosti Google, rovnakom stroji JavaScript, ktorý funguje vo webovom prehliadači Chrome. Uzol je multiplatformový, beží na serveroch aj na klientoch a oproti tradičným webovým serverom, ako je Apache, má určité výkonnostné výhody.

Node.js zaujíma pri poskytovaní webových požiadaviek iný prístup ako tradičné webové servery. V tradičnom prístupe server vytvorí nové vlákno vykonania alebo dokonca predloží nový proces na vybavenie žiadosti. Vytváranie nití je efektívnejšie ako procesy rozvetvenia, ale obe zahŕňajú značnú réžiu. Veľké množstvo vlákien môže spôsobiť, že silne zaťažený systém strávi drahocenné cykly plánovaním vlákien a prepínaním kontextu, zvyšuje latenciu a obmedzuje škálovateľnosť a priepustnosť.

Node.js je oveľa efektívnejší. Uzol spustí slučku udalostí s jedným vláknom zaregistrovanú v systéme na spracovanie pripojení a každé nové pripojenie spôsobí spustenie funkcie spätného volania JavaScriptu. Funkcia spätného volania dokáže spracovať požiadavky s neblokujúcimi I / O hovormi a ak je to potrebné, môže umiestniť vlákna z fondu na vykonávanie blokujúcich alebo na CPU náročných operácií a na vyváženie záťaže medzi jadrami CPU.

Node.js vyžaduje na zvládnutie väčšieho množstva spojenia menej pamäte ako väčšina konkurenčných architektúr škálovateľných pomocou vlákien - vrátane serverov Apache HTTP Server, ASP.NET, Ruby on Rails a Java. Preto sa Node stal mimoriadne populárnou voľbou pre vytváranie webových serverov, rozhraní REST API a aplikácií v reálnom čase, ako sú chatovacie aplikácie a hry. Ak existuje jeden komponent, ktorý definuje zásobník MEAN, je to Node.js.

Úvod do Node.js nájdete v vysvetlivke Martina Hellera. Ak chcete začať vyvíjať s Node, pozrite si jeho tutoriál Node.js.

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

Tieto štyri komponenty pracujúce v tandeme nie sú riešením každého problému, ale v súčasnom vývoji si určite našli miesto. IBM rozdeľuje oblasti, kde zásobník MEAN zodpovedá faktúre. Pretože je škálovateľný a dokáže súčasne spracovať veľké množstvo používateľov, je zásobník MEAN obzvlášť dobrou voľbou pre natívne cloudové aplikácie. Uhlová predná časť je tiež skvelou voľbou pre jednostránkové aplikácie. Príklady zahŕňajú:

  • Aplikácie na sledovanie výdavkov
  • Weby so zhromažďovaním správ
  • Mapovacie a lokalizačné aplikácie

ZMYSEL vs. MERN

Skratka „MERN“ sa niekedy používa na označenie zásobníkov MEAN, ktoré namiesto Angular používajú React.js. React je rámec, nie plnohodnotná knižnica ako Angular, a sú tu plusy aj mínusy pri výmene Reactu do zásobníka založeného na JavaScripte. Stručne povedané, React sa dá ľahšie naučiť a väčšina vývojárov môže písať a testovať kód React rýchlejšie, ako dokáže písať a testovať plnohodnotnú aplikáciu Angular. React tiež produkuje lepšie mobilné klientske rozhrania. Na druhej strane je uhlový kód stabilnejší, čistejší a výkonnejší. Angular je vo všeobecnosti voľbou pre vývoj na podnikovej úrovni.

Samotná skutočnosť, že máte k dispozícii túto voľbu, však ukazuje, že MEAN nie je pre vývojárov obmedzenou kazajkou. Nielen, že môžete vymeniť rôzne komponenty za jednu z kanonických štyroch vrstiev; môžete pridať aj doplnkové komponenty. Napríklad systémy cache ako Redis alebo Memcached sa dajú v rámci Expressu použiť na urýchlenie odpovedí na požiadavky.

MEAN vývojári zásobníkov

Schopnosť byť vývojárom zásobníka MEAN v zásade znamená stať sa vývojárom s úplným zásobníkom so zameraním na konkrétnu sadu nástrojov jazyka JavaScript, o ktorej sme tu hovorili. Popularita zásobníka MEAN však znamená, že veľa pracovných inzerátov bude zameraných na vývojárov s úplným zásobníkom so zručnosťami špecifickými pre program MEAN. Guru99 odbúrava predpoklady na získanie jednej z týchto úloh. Okrem základných komponentov zásobníka MEAN by mal vývojár zásobníka MEAN dobre rozumieť:

  • Front-end a back-end procesy
  • HTML a CSS
  • Pokyny pre programovacie šablóny a návrh architektúry
  • Vývoj webu, nepretržitá integrácia a cloudové technológie
  • Architektúra databázy
  • Životný cyklus vývoja softvéru (SDLC) a aké to je vyvíjať v agilnom prostredí

Aký je plat vývojára zásobníka MEAN? Aj keď vždy existuje škála založená na skúsenostiach a zamestnávateľovi, je to určite lukratívna oblasť. Od decembra 2019 spoločnosť Neuvoo.com tvrdí, že stredná mzda, ktorú vývojár MEAN stacku môže očakávať, je zhruba 125 000 dolárov ročne. Indeed.com spája vývojárov MEAN stack s vývojármi full-stack všeobecnejšie a fixuje typický ročný plat okolo 112 000 dolárov.

VÝUČKY pre zásobníky MEAN

Vyhovujú vám technické základy a ste pripravení sa ponoriť a naučiť sa ZMYSELNÝ zásobník? Existuje množstvo bezplatných návodov, ktoré vám môžu pomôcť začať. Stránka Úhlové šablóny má obzvlášť podrobný návod, ktorý vás prevedie procesom vytvárania jednoduchej webovej stránky pomocou zásobníka MEAN. TutorialsPoint má dobrého sprievodcu vytváraním jednostránkovej webovej aplikácie so zásobníkom MEAN. Príjemné špinenie rúk a veľa šťastia!

$config[zx-auto] not found$config[zx-overlay] not found