Разработка MEAN Stack
Стек MEAN — это основанная на JavaScript платформа для построения веб-приложений. MEAN — это аббревиатура MongoDB, Express, Angular и NodeJS.
Четыре критические технологии, которые составляют слои стека.
- MongoDB — документная база данных MongoDB — документная база данных
- Express(.js) — веб-фреймворк, написанный на Node.js
- Angular(.js) – фреймворк JavaScript для клиента
- Node.js — самый популярный в мире веб-сервер JavaScript
Существуют варианты стека MEAN, включая MERN (который заменяет Angular.js на React.js) и MEVN (который заменяет Angular.js на React.js) (использующий Vue.js). Стек MEAN — одна из наиболее широко используемых технологических идей для разработки веб-приложений.
Как реализуется стек MEAN?
Архитектура стека MEAN
Архитектура MEAN предназначена для упрощения процесса разработки веб-приложений на JavaScript и управления JSON.

Ссылка на изображение: https://www.mongodb.com/mean-stack
Компоненты стека MEAN
Фронтенд Angular.js
Angular.js, называемый себя «фреймворком JavaScript MVW» (MVW означает «Model View and Whatever»), находится в самой верхней части стека MEAN.
Angular.js позволяет добавлять метаданные к тегам HTML, что позволяет создавать динамичные интерактивные онлайн-опыты гораздо более мощно, чем это было бы возможно с использованием только статического HTML и JavaScript (или jQuery).
Angular имеет все преимущества, которые должен иметь фронтенд-фреймворк JavaScript, такие как валидация форм, локализация и взаимодействие с вашим бэкенд-приложением.
Уровень сервера с Express.js и Node.js
Express.js — это следующий уровень ниже, работающий на сервере Node.js. Express.js позиционирует себя как «быстрый, агностический и легкий веб-фреймворк для Node.js», и это именно то, что он собой представляет.
Express.js имеет сложные модели для маршрутизации URL (связывание входящего URL с функцией сервера) и обработку HTTP-запросов и ответов. Вы можете подключиться к функциям Express.js, которые питают ваше приложение, отправляя запросы XML HTTP (XHRs), GETs или POSTs из вашего фронтенда Angular.js.
Эти методы, в свою очередь, используют драйверы Node.js MongoDB для доступа и обновления данных в вашей базе данных MongoDB либо через обратные вызовы, либо через Promises.
База данных MongoDB
Если ваше приложение сохраняет данные (профили пользователей, контент, комментарии, загрузки или события), вам нужна база данных, которая так же проста в использовании, как Angular, Express или Node.
Здесь на помощь приходит MongoDB: JSON-документы, написанные в вашем фронтенде Angular.js, могут быть передана на сервер Express.js, где они могут быть обработаны и (если они действительны) сразу же сохранены в MongoDB для последующего получения.
Опять же, если вы хотите быстро получить максимальную отдачу от MongoDB, вы должны выбрать MongoDB Atlas. Одним щелчком мыши вы получите встроенную комплексную безопасность базы данных и масштабируемость в кроссоблачном окружении. Это будет обсуждаться более подробно далее на этой странице.
Преимущества стека MEAN
Приложения MEAN могут использоваться различными способами благодаря их кроссплатформенной природе write-once. Хотя MEAN хорошо подходит для приложений реального времени, особенно тех, которые работают изначально в облаке, и одностраничных (динамических) веб-приложений, разработанных с Angular.js, он также может использоваться для различных других целей, включая следующие:
- Инструменты управления рабочими процессами.
- Сайты, которые агрегируют новости.
- Приложения для списков дел и календарей.
- Интерактивные форумы.
- И многое другое.
Благодаря тому, что все компоненты построены на JavaScript и JSON, взаимодействие между компонентами стека просто и легко.
Кроме того, компоненты E и A MEAN (Express и Angular) — два из наиболее широко используемых и поддерживаемых фреймворков JavaScript для разработки бэкенда и фронтенда соответственно. Express упрощает процесс маршрутизации и обработки HTTP-запросов и ответов и имеет отличную поддержку промежуточного программного обеспечения, которое управляет JSON-конечными точками и отправками форм. Angular — это очень эффективный фреймворк для разработки динамических веб-сайтов HTML, которые взаимодействуют с бэкенд-сервером.
MEAN — лучший стек для разработки приложений Node.js, будь то высокопроизводительные API, простые веб-приложения или микросервисы.
Все компоненты стека MEAN имеют открытый исходный код, что дает разработчикам огромную бесплатную возможность.
Недостатки стека MEAN
Хотя JavaScript — отличный современный язык, он первоначально не был предназначен для разработки бэкенд-серверов. Поскольку стек MEAN построен на JavaScript, включая бэкенд-сервер, он может испытывать проблемы с параллелизмом и производительностью в масштабе из-за природы JavaScript.
Кроме того, поскольку возможность разработки так быстра, бизнес-логика и логика сервера могут страдать от недостаточного разделения, что приводит к лапше-коду и плохим практикам.
Наконец, хотя доступны различные руководства и учебные материалы, они обычно исключают конкретные правила кода JS для этого стека. В результате то, что хорошо работало в одном приложении, может вызвать проблемы в другом.
Когда уместно использовать стек MEAN?
MEAN придерживается стандартной структуры трехуровневого стека, которая включает уровень представления (Angular.js), уровень приложения (Express.js и Node.js) и уровень базы данных (MongoDB).
Если вы разрабатываете приложение JavaScript, особенно на Node.js, вам следует серьезно рассмотреть MEAN.
MongoDB хранит данные в формате, подобном JSON (BSON, двоичное расширение JSON), определяет язык запросов MongoDB (MQL) в JSON и предоставляет интерпретатор JavaScript для своего интерфейса командной строки (CLI). MongoDB — это не только хранилище данных JavaScript/JSON, оно также имеет сложные возможности, такие как индексирование и поиск глубоко в документах JSON, встроенные драйверы Node.js и создано для горизонтального масштабирования. Разработка облачных приложений намного проще с использованием MongoDB Atlas, облачной базы данных типа Database-as-a-Service от создателей MongoDB.
MEAN — лучший стек для разработки приложений Node.js, будь то высокопроизводительные API, простые веб-приложения или микросервисы.
Использование стека MEAN в сочетании с MongoDB Atlas
Драйвер MongoDB Node.js упрощает и интуитивно интегрирует MongoDB в сценарии Node.js, экономя время разработчиков и повышая их производительность.
После этого вам потребуется база данных MongoDB. Самый простой способ начать работу с MongoDB — это настроить бесплатный кластер в MongoDB Atlas, полностью управляемой мультиоблачной базе данных как сервисе от MongoDB.
Базы данных Atlas просты в настройке и масштабировании и предоставляют единообразный URI для подключения. Обратитесь к официальному руководству MongoDB для получения информации о том, как подключиться к кластеру.
Кроме того, подключения Atlas имеют встроенную аутентификацию по имени пользователя/пароля и сквозное шифрование TLS как стандарт. Кроме того, это позволяет вам быстро использовать дополнительные возможности безопасности MongoDB, такие как аутентификация сертификатов/IAM, LDAP, шифрование в покое и аудит.
Кроме того, проект Atlas может использовать платформу приложений MongoDB Realm для включения различных поставщиков аутентификации, включая Google, Facebook, JWT и пользовательскую аутентификацию.
Atlas легко масштабируется и управляется; его основная ценность заключается в том, что он защищает и обеспечивает безопасность наиболее ценного уровня стека MEAN: уровня данных.
Безопасен ли стек MEAN?
Мы рекомендуем использовать стек MEAN в сочетании с MongoDB Atlas, так как Atlas имеет встроенные учетные данные, брандмауэр и сквозное шифрование, обеспечивая наилучшую основу для защиты вашей MongoDB.
Кроме того, стек MEAN имеет отчетливую трехуровневую архитектуру, которая при сочетании с лучшими практиками отрасли и надлежащей сетевой изоляцией должна помешать конечным пользователям получить доступ к деловой логике и, что более важно, к уровню базы данных. В результате ваше приложение предназначено по умолчанию для предотвращения вредоносного поведения пользователя от угрозы (внедрение запросов, манипулирование кодом, подделка портов и т. д.).