Содержание статьи
Определен стек MEAN
Стек MEAN — это программный стек, то есть набор технологических уровней, составляющих современное приложение, полностью построенный на JavaScript. MEAN представляет прибытие JavaScript в качестве языка «разработки полного стека», который запускает все в приложении от начала до конца. Каждый из инициалов в MEAN обозначает компонент в стеке:
- MongoDB: Сервер базы данных, который запрашивается с использованием JSON (JavaScript Object Notation) и который хранит структуры данных в двоичный формат JSON
- Экспресс: Серверная среда 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 и с тем, как он работает. Мартин Хеллер из InfoWorld углубился в MongoDB 4 в обзоре InfoWorld, где рассказывает о внутренних возможностях, запросах и недостатках MongoDB.
Как и в любом другом решении для баз данных, вам потребуется какое-то промежуточное программное обеспечение для связи между MongoDB и компоненты JavaScript. Один общий выбор для стека MEAN — Mongoose. Mongoose обеспечивает не только подключение, но и моделирование объектов, проверку на стороне приложения и ряд других функций, которые не нужно беспокоить повторным изобретением для каждого нового проекта.
Express.js
Возможно, Express является наиболее широко используемой средой веб-приложений для Node.js. Express предоставляет лишь небольшой набор необходимых функций — это, по сути, минимальный программируемый веб-сервер, но его можно расширить с помощью плагинов. Такая конструкция без излишеств помогает поддерживать экспрессию легковесной и производительной.
Ничто не говорит о том, что MEAN-приложение должно предоставляться пользователям напрямую через Express, хотя это, безусловно, распространенный сценарий. Альтернативная архитектура заключается в развертывании другого веб-сервера, такого как Nginx или Apache, перед Express в качестве обратного прокси-сервера. Это позволяет выгружать такие функции, как балансировка нагрузки, в отдельный ресурс.
Поскольку Express преднамеренно минимален, с ним не связано много концептуальных накладных расходов. В руководствах на Expressjs.com вы найдете краткий обзор основ для подключения баз данных и не только.
Angular
Angular (ранее AngularJS) используется для построения внешнего интерфейса. для СРЕДНЕГО приложения. Angular использует JavaScript-код браузера для форматирования предоставленных сервером данных в HTML-шаблоны, так что большая часть работы по визуализации веб-страницы может быть передана клиенту. Многие одностраничные веб-приложения создаются с использованием Angular на внешней стороне.
Одно важное предостережение: разработчики работают с Angular, написав TypeScript, типизированный язык JavaScript, который компилируется в JavaScript. Для некоторых людей это является нарушением одной из основных концепций стека MEAN — то, что JavaScript используется везде и исключительно. Тем не менее, TypeScript является близким родственником JavaScript, поэтому переход между ними не такой резкий, как с другими языками.
Для глубокого погружения в Angular Мартин Хеллер из InfoWorld предлагает вам все необходимое. В своем уроке по Angular он познакомит вас с созданием современного веб-приложения для Angular.
Node.js
Наконец, что немаловажно, есть Node.js — среда выполнения JavaScript, которая обеспечивает работу серверной части веб-приложения MEAN. Узел основан на движке Google V8 JavaScript, том же движке JavaScript, который работает в веб-браузере Chrome. Node является кроссплатформенным, работает как на серверах, так и на клиентах, и имеет определенные преимущества в производительности по сравнению с традиционными веб-серверами, такими как Apache.
Node.js использует другой подход к обслуживанию веб-запросов, чем традиционные веб-серверы. В традиционном подходе сервер порождает новый поток выполнения или даже создает новый процесс для обработки запроса. Нерестовые потоки более эффективны, чем процессы разветвления, но оба требуют значительных накладных расходов. Большое количество потоков может заставить сильно загруженную систему тратить драгоценные циклы на планирование потоков и переключение контекста, добавляя задержку и накладывая ограничения на масштабируемость и пропускную способность.
Node.js гораздо эффективнее. Узел запускает однопоточный цикл обработки событий, зарегистрированный в системе, для обработки соединений, и каждое новое соединение вызывает срабатывание функции обратного вызова JavaScript. Функция обратного вызова может обрабатывать запросы с неблокирующими вызовами ввода-вывода и, при необходимости, может порождать потоки из пула для выполнения операций блокировки или с интенсивной загрузкой ЦП и для балансировки нагрузки между ядрами ЦП.
Узел. js требует меньше памяти для обработки большего количества соединений, чем большинство конкурирующих архитектур, которые масштабируются с потоками, включая Apache HTTP Server, ASP.NET, Ruby on Rails и серверы приложений Java. Таким образом, Node стал чрезвычайно популярным выбором для создания веб-серверов, API REST и приложений реального времени, таких как приложения для чата и игры. Если есть один компонент, определяющий стек MEAN, это Node.js.
Для ознакомления с Node.js см. Объяснение Мартина Хеллера. Чтобы начать разработку с Node, см. Его руководство по Node.js.
Преимущества и преимущества стека MEAN
Эти четыре компонента, работающие в тандеме, не являются решением всех проблем, но они определенно нашли свою нишу в современной развитие. IBM разбивает области, где стек MEAN отвечает всем требованиям. Поскольку он масштабируемый и может одновременно обрабатывать большое количество пользователей, стек MEAN является особенно хорошим выбором для облачных приложений. Угловая передняя часть также является отличным выбором для одностраничных приложений. Примеры:
- Приложения для отслеживания расходов
- Сайты агрегации новостей
- Приложения для картографии и определения местоположения
MEAN vs. MERN
Акроним «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) и его развитие в гибкой среде
Какова зарплата разработчика стека MEAN? Хотя всегда есть диапазон, основанный на опыте и работодателе, это определенно прибыльная сфера. По состоянию на декабрь 2019 года Neuvoo.com сообщает, что средняя зарплата, которую может ожидать разработчик стека MEAN, составляет около 125 000 долларов в год. В самом деле, разработчики стека MEAN объединяют разработчиков полного пакета со стеками в целом и оценивают типичную годовую зарплату в размере около 112 000 долларов.
Учебные пособия по стеку MEAN
Вы знакомы с техническими основами и готовы погрузиться и выучить СРЕДНИЙ стек? Существует множество бесплатных уроков, которые помогут вам начать. Сайт Angular Templates содержит особенно подробное руководство, которое проведет вас через процесс создания простого веб-сайта с использованием стека MEAN. TutorialsPoint предлагает хорошее руководство по созданию одностраничного веб-приложения со стеком MEAN. Наслаждайтесь грязными руками и удачи!
Эта статья «Что такое стек MEAN? Веб-приложения JavaScript» была первоначально опубликована
InfoWorld .