Какво представлява стекът MEAN? JavaScript уеб приложения

Дефиниран стекът MEAN

MEAN стекът е софтуерен стек - т.е. набор от технологични слоеве, съставляващи модерно приложение - който е изграден изцяло в JavaScript. MEAN представлява пристигането на JavaScript като език за „пълна разработка“, изпълняващ всичко в дадено приложение от предния край до задния край. Всеки от инициалите в MEAN означава компонент в стека:

  • MongoDB: Сървър на база данни, който се заявява с помощта на JSON (JavaScript Object Notation) и който съхранява структури от данни в двоичен JSON формат
  • Express: Сървърна JavaScript рамка
  • Angular: JavaScript рамка от страна на клиента
  • Node.js: Времетраене на JavaScript

Голяма част от привлекателността на MEAN е последователността, която идва от факта, че това е JavaScript през и през. Животът е по-опростен за разработчиците, защото всеки компонент на приложението - от обектите в базата данни до клиентския код - е написан на един и същ език. 

Тази последователност е в контраст с кучетата на LAMP, дългогодишният продукт на разработчиците на уеб приложения. Подобно на MEAN, LAMP е съкращение за компонентите, използвани в стека - Linux, Apache HTTP Server, MySQL и PHP, Perl или Python. Всяко парче от стека има малко общо с друго парче. 

Това не означава, че стекът LAMP е по-нисък. Той все още се използва широко и всеки елемент в стека все още се възползва от активна общност за разработка. Но концептуалната последователност, която MEAN осигурява, е благодат. Ако използвате един и същ език и много от едни и същи езикови концепции, на всички нива на стека, за разработчика става по-лесно да овладее целия стек наведнъж.

Повечето стекове MEAN включват всичките четири компонента - базата данни, предния край, задната част и механизма за изпълнение. Това не означава, че стекът се състои само от тези елементи, но те формират ядрото.

MongoDB

Подобно на други системи за бази данни NoSQL, MongoDB използва дизайн без схема. Данните се съхраняват и извличат като форматирани в JSON документи, които могат да имат произволен брой вложени полета. Тази гъвкавост прави MongoDB подходящ за бързо разработване на приложения, когато се справя с бързо променящите се изисквания.

Използването на MongoDB идва с редица предупреждения. От една страна, MongoDB има репутацията на несигурен по подразбиране. Ако го внедрите в производствена среда, трябва да предприемете стъпки за осигуряването му. А за разработчиците, идващи от релационни бази данни или дори други NoSQL системи, ще трябва да отделите известно време, за да опознаете MongoDB и как работи. Мартин Хелър потъна дълбоко в прегледа на MongoDB 4, където говори за вътрешните елементи на MongoDB, заявки и недостатъци.

Както при всяко друго решение за база данни, ще ви е необходим някакъв мидълуер, за да комуникирате между MongoDB и JavaScript компонентите. Един често срещан избор за стека MEAN е Mongoose. Mongoose осигурява не само свързаност, но моделиране на обекти, валидиране от страна на приложението и редица други функции, които не искате да ви безпокоят с преоткриването за всеки нов проект.

Express.js 

Express е може би най-широко използваната рамка за уеб приложения за Node.js. Express предоставя само малък набор от основни функции - това е по същество минимален, програмируем уеб сървър - но може да бъде разширен чрез приставки. Този безпроблемен дизайн помага да запазите Express лек и ефективен.

Нищо не казва, че приложение MEAN трябва да се обслужва директно на потребителите чрез Express, въпреки че това със сигурност е често срещан сценарий. Алтернативна архитектура е да се разположи друг уеб сървър, като Nginx или Apache, пред Express като обратен прокси. Това позволява функциите като балансиране на натоварването да бъдат разтоварени в отделен ресурс.

Тъй като Express е умишлено минимален, той не е свързан с много концептуални режийни разходи. Уроците в Expressjs.com могат да ви отведат от бърз преглед на основите до свързване на бази данни и след това.

Ъглова

Angular (по-рано AngularJS) се използва за изграждане на предния край за приложение MEAN. Angular използва JavaScript на браузъра, за да форматира предоставени от сървъра данни в HTML шаблони, така че голяма част от работата по изобразяване на уеб страница може да бъде разтоварена на клиента. Много уеб страници с една страница са изградени с помощта на Angular отпред.

Едно важно предупреждение: Разработчиците работят с Angular, като пишат в TypeScript, език, подобен на JavaScript, който се компилира в JavaScript. За някои хора това е нарушение на една от основните концепции на стека MEAN - че JavaScript се използва навсякъде и изключително. TypeScript обаче е близък братовчед на JavaScript, така че преходът между двете не е толкова дразнещ, колкото може да бъде с други езици.

За дълбоко гмуркане в Angular, Мартин Хелър ви покри. В своя урок Angular той ще ви преведе през създаването на модерно уеб приложение Angular.

Node.js 

И накрая, но едва ли не по важност, има Node.js - изпълнението на JavaScript, което задвижва сървърната страна на уеб приложението MEAN. Node се основава на V8 JavaScript на Google, същият JavaScript двигател, който работи в уеб браузъра Chrome. Node е междуплатформен, работи както на сървъри, така и на клиенти и има определени предимства в производителността пред традиционните уеб сървъри като Apache. 

Node.js използва различен подход към обслужването на уеб заявки, отколкото традиционните уеб сървъри. В традиционния подход сървърът създава нова нишка на изпълнение или дори форкира нов процес за обработка на заявката. Хвърлянето на хайвера нишки е по-ефективно от процесите на разклоняване, но и двете включват доста големи разходи. Голям брой нишки могат да накарат силно натоварената система да прекара скъпоценни цикли за планиране на нишки и превключване на контекста, добавяйки латентност и налагайки ограничения върху мащабируемостта и производителността. 

Node.js е далеч по-ефективен. Node изпълнява еднопоточен цикъл на събития, регистриран в системата за обработка на връзки, и всяка нова връзка предизвиква задействане на функция за обратно извикване на JavaScript. Функцията за обратно извикване може да обработва заявки с неблокиращи I / O повиквания и, ако е необходимо, може да създаде нишки от пул за изпълнение на блокиращи или CPU-интензивни операции и за балансиране на натоварването между CPU ядра.

Node.js изисква по-малко памет за обработка на повече връзки, отколкото повечето конкурентни архитектури, които се мащабират с нишки - включително Apache HTTP Server, ASP.NET, Ruby on Rails и Java сървъри за приложения. По този начин Node се превърна в изключително популярен избор за изграждане на уеб сървъри, REST API и приложения в реално време като приложения за чат и игри. Ако има един компонент, който определя стека MEAN, това е Node.js. 

За въведение в Node.js вижте обяснителя на Martin Heller. За да започнете да разработвате с Node, вижте неговия урок за Node.js. 

Предимства и предимства на стека MEAN 

Тези четири компонента, работещи в тандем, не са решението на всеки проблем, но определено са намерили ниша в съвременното развитие. IBM разбива областите, в които стекът MEAN съответства на сметката. Тъй като е мащабируем и може да се справя едновременно с голям брой потребители, стекът MEAN е особено добър избор за приложения, използвани в облака. Ъгловият преден край също е чудесен избор за приложения на една страница. Примерите включват:

  • Приложения за проследяване на разходи
  • Сайтове за агрегиране на новини
  • Приложения за картографиране и местоположение

СРЕДСТВО срещу МЕРН

Съкращението „MERN“ понякога се използва за описване на MEAN стекове, които използват React.js вместо Angular. React е рамка, а не пълноценна библиотека като Angular и има плюсове и минуси при смяната на React в стек, базиран на JavaScript. Накратко, React е по-лесен за учене и повечето разработчици могат да пишат и тестват React кода по-бързо, отколкото могат да пишат и тестват пълноценно Angular приложение. React създава и по-добри мобилни предни краища. От друга страна, Angular кодът е по-стабилен, по-чист и по-ефективен. Като цяло, Angular е изборът за развитие на корпоративен клас.

Но самият факт, че този избор е достъпен за вас, показва, че MEAN не е ограничена тесна риза за разработчици. Не само можете да сменяте различни компоненти за един от каноничните четири слоя; можете да добавите и допълнителни компоненти. Например системи за кеширане като Redis или Memcached могат да се използват в Express за ускоряване на отговорите на заявките.

MEAN разработчици на стека

Притежаването на умения да бъдеш MEAN разработчик на стека по същество предполага да станеш разработчик на пълен стек, с фокус върху конкретния набор от JavaScript инструменти, които обсъдихме тук. Популярността на стека MEAN обаче означава, че много обяви за работа ще бъдат насочени към разработчици с пълен стек със специфични за MEAN умения. Guru99 разбива предпоставките за хващане на една от тези работни места. Освен познаването на основните компоненти на MEAN стека, разработчикът на MEAN стека трябва добре да разбира:

  • Процеси отпред и отзад
  • HTML и CSS
  • Шаблони за програмиране и насоки за архитектурен дизайн
  • Уеб разработка, непрекъсната интеграция и облачни технологии
  • Архитектура на базата данни
  • Жизненият цикъл на разработката на софтуер (SDLC) и какво е да се развиваш в гъвкава среда

Каква е средната заплата на разработчика на стека? Въпреки че винаги има набор, базиран на опит и работодател, това определено е доходоносна област. Към декември 2019 г. Neuvoo.com казва, че средната заплата, която разработчикът на MEAN стека може да очаква, е около 125 000 долара годишно. Действително.com обединява разработчиците на стека на MEAN с разработчици с пълен стек по-общо и обвързва типичната годишна заплата от около 112 000 долара.

MEAN уроци за стека

Удовлетворени ли сте с техническите основи и готови ли сте да се потопите и да научите стека MEAN? Има редица безплатни уроци, които могат да ви помогнат да започнете. Сайтът Angular Templates има особено задълбочен урок, който ви води през процеса на изграждане на прост уебсайт с помощта на стека MEAN. TutorialsPoint има добър наръчник за изграждане на еднолично уеб приложение със стека MEAN. Насладете се на изцапването на ръцете и късмет!