公告推出MongoDB 8.0,史上最快的MongoDB!阅读更多 >>推出MongoDB 8.0,史上最快的MongoDB!>>

MEAN栈是什么?

开发者始终重视在集成的基础技术堆栈上构建应用程序的能力。通过在一系列标准化构建块之上开始开发过程,开发者可以花费更多的时间在区分业务的应用程序上工作,而不是从头开始并将一堆单独的组件粘合在一起。

什么是MEAN栈?

这些“标准化构建块”中最常见的例子之一被称为MEAN栈。了解MEAN栈是什么,它是如何工作的,MEAN栈的优点和缺点,以及它通常如何使用。

MEAN栈是一个用于开发可扩展Web应用程序的JavaScript框架。术语MEAN是MongoDB、Express、Angular和Node的缩写——构成技术堆栈层的四种关键技术。

  • MongoDB:一个面向云应用程序的NoSQL、面向对象数据库
  • Express(.js):一个用于Node(.js)的Web应用程序框架,支持前端(例如,客户端)与数据库之间的交互
  • Angular(.js):通常被称为“前端”;一个用于创建动态Web应用程序的客户端JavaScript框架,用于与交互式用户界面一起工作
  • Node(.js):用于构建可扩展网络应用的首选JavaScript Web服务器

目录

MEAN与MERN与MEVN——它们之间有什么区别?

虽然 MEAN 栈是构建 Web 应用程序最受欢迎的技术概念之一,但还有其他替代方案,包括

  • MERN:MERN 栈只是用 "R"(ReactJS)替换了 MEAN 中的 "A"(例如,AngularJS)。
  • MEVN:MEVN 栈用 "V"(Vue.js)替换了 MEAN 中的 "A"。

MEAN、MERN 和 MEVN 之间的主要区别在于,它们各自为前端(例如,客户端)开发提供不同的选项,同时仍然使用 MongoDB、Express.js 和 Node.js 进行后端(例如,服务器端)开发。帮助开发者确定使用哪个技术栈的因素包括

  • 开发者熟悉度:选择框架的一个重要因素是开发者的熟悉度。许多开发团队会根据团队成员的经验和舒适度选择栈,假设这对项目交付成果没有重大影响。 单页应用程序(SPA):当构建复杂、功能丰富的 SPA 时,开发者通常会选择 MEAN 栈,因为 AngularJS(由 Google 维护)非常适合复杂的 Web 应用程序。
  • 需要快速用户界面的大型应用程序:ReactJS(在 MERN 栈中)由 Meta 维护,是一个特别适用于构建快速、交互式用户界面的 JavaScript 库。此外,MERN 框架提供高性能和可扩展性,这在创建大型应用程序时是可取的。
  • 简单性:Vue.js(在 MEVN 栈中)是一个简单的渐进式 JavaScript 框架,以其易于集成而闻名。希望使用简单、快速开发小型到中型应用程序的开发者通常会选择 MEVN。

MEAN 栈是如何工作的?


MEAN 栈组件

MEAN 架构旨在使在 JavaScript 中构建 Web 应用程序和处理 JSON 变得非常容易。

Mean Stack Diagram

MEAN 栈组件


Angular.js 前端

在 MEAN 栈的最顶层是 Angular.js,它自称为“JavaScript MVW 框架”(MVW 代表“模型视图和其他”)。

Angular.js 允许您通过在 HTML 标签中添加元数据来扩展 HTML 标签,从而比使用静态 HTML 和 JavaScript(或 jQuery)自行构建更有效地创建动态、交互式的 Web 体验。

Angular 拥有前端 JavaScript 框架应有的所有功能和特性,包括表单验证、本地化和与后端服务的通信。


Express.js 和 Node.js 服务器层

下一层是运行在 Node.js 服务器上的 Express.js。Express.js 称自己为“快速、无偏见、最小化的 Node.js Web 框架”,这确实正是它所代表的。

Express.js 拥有强大的 URL 路由模型(将传入的 URL 与服务器功能匹配),以及处理 HTTP 请求和响应。您可以从 Angular.js 前端通过 XML HTTP 请求(XHR)、GET 或 POST 连接到 Express.js 函数,这些函数为您的应用程序提供动力。

这些函数反过来使用 MongoDB 的 Node.js 驱动程序,通过回调或承诺来访问和更新 MongoDB 数据库中的数据。


MongoDB 数据库层

如果您的应用程序存储任何数据(用户资料、内容、评论、上传、事件等),那么您将需要一个与Angular、Express和Node一样容易使用的数据库。

这正是MongoDB的用武之地:在您的Angular.js前端创建的JSON文档可以发送到Express.js服务器,在那里它们可以被处理,并且(假设它们是有效的)可以直接存储在MongoDB中以便稍后检索。

如果您想轻松地充分利用MongoDB,您将想查看MongoDB Atlas。这将为您提供一键式内置全面数据库安全和跨云可伸缩性。更多内容将在本页稍后介绍。

MEAN 栈的优点

MEAN应用程序可以使用跨平台的一次编写方法以多种方式使用。虽然MEAN特别适合实时应用程序,尤其是那些在云中本机运行以及使用Angular.js构建的单页(动态)Web应用程序,但它也可以用于其他用例,例如

  • 工作流管理工具。
  • 新闻聚合网站。
  • 待办事项和日历应用程序。
  • 交互式论坛。

MEAN堆栈还有许多其他用途。

由于所有组件都基于JavaScript和JSON,因此堆栈组件之间的集成直观且简单。

此外,MEAN中的E和A(Express和Angular)分别是后端和前端开发中最受欢迎和受支持的JavaScript框架。Express使路由和管理HTTP请求和响应变得超级简单,并包括对中间件的出色支持,用于处理JSON端点和表单提交。Angular是构建与后端服务器通信的动态HTML页面的强大工具。

无论您是构建高吞吐量API、简单的Web应用程序还是微服务,MEAN都是构建Node.js应用程序的理想堆栈。

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查询API定义在JSON中,其命令行界面(CLI)是一个JavaScript解释器。MongoDB不仅仅是JavaScript/JSON数据存储,它还包含了许多高级功能,如索引和深入查询JSON文档,具有强大的原生Node.js驱动程序,并设计用于横向扩展。使用MongoDB Atlas(MongoDB的创建者的云原生数据库作为服务)在云中开发应用程序甚至更容易。

无论您是构建高吞吐量API、简单的Web应用程序还是微服务,MEAN都是构建Node.js应用程序的理想堆栈。

使用 MongoDB Atlas 配合 MEAN 栈

MongoDB Node.js驱动程序使得从Node.js脚本中与MongoDB一起工作对开发者来说简单直观,节省了他们的时间,提高了他们的生产力。

接下来,您需要一个MongoDB数据库。开始使用MongoDB的最简单方法是创建一个免费的集群,在MongoDB Atlas中创建。MongoDB Atlas是MongoDB的完全管理的开发者数据平台。

Atlas数据库易于部署和扩展,为您提供一致的URI以进行连接。请参阅官方MongoDB文档关于连接到集群的内容

在Atlas中,连接默认带有内置用户名/密码和端到端TLS加密。此外,这些连接允许您利用高级MongoDB安全功能,如证书/IAM认证、LDAP、静态加密和一键式审计。

此外,Atlas项目可以利用Atlas App Services应用程序平台,轻松集成许多认证提供商,如Google、Facebook、JWT和自定义认证。

扩展和管理Atlas非常简单;其最大的好处是支持并保护MEAN堆栈中最有价值的层:数据层。

MEAN 栈的安全性如何?

我们建议使用MongoDB Atlas与MEAN堆栈一起使用,因为Atlas内置了凭证、防火墙和端到端加密,这是保护您的MongoDB的最佳基础。

此外,MEAN堆栈有明确的三个层级分离,如果与最佳实践和正确的网络隔离一起使用,应防止您的最终用户访问业务逻辑,更不用说您的数据库层。因此,您的应用程序默认设计为避免恶意用户交互,从而降低您的应用风险(查询注入、代码操纵、端口欺骗等)。

常见问题解答

MEAN堆栈容易学习吗?

MEAN堆栈的基础是直观的JavaScript开发,并且对于MongoDB这样的JSON结构是自然的数据库,这使得此解决方案易于适应和维护。许多开发者发现MEAN堆栈比其他选项更容易学习。

学习MEAN堆栈的容易程度和速度还取决于几个因素

  • JavaScript熟练度:鉴于MEAN开发者对JavaScript的依赖,对JavaScript有深入理解非常有帮助。
  • 一般Web开发经验:之前的Web开发经验以及熟悉AngularJS、ReactJS、Vue.js或Express.js等框架或库将使学习MEAN堆栈更加直观。
  • 异步编程:熟悉异步概念,如回调、承诺和async function/await关键字,有助于因为Node.js基于异步、事件驱动编程。
  • NoSQL数据库:了解NoSQL数据库有帮助,因为MongoDB是一个面向对象的NoSQL数据库。

话虽如此,学习MEAN堆栈并不一定需要所有这些知识。网上有大量的教程、课程和社区可以帮助您获得MEAN堆栈开发所需的知识和技能。

MEAN是一个全栈解决方案吗?

是的。MEAN遵循传统的三层堆栈模式,包括显示层(Angular.js)、应用层(Express.js和Node.js)和数据层(MongoDB)。

全栈和MEAN堆栈之间的区别是什么?

全栈和MEAN栈有什么区别?MEAN栈和全栈都包括前端(例如,客户端)、后端(服务器端)和数据库开发。然而,全栈开发者的知识通常比MEAN栈构建块更广泛和深入。全栈开发者额外知识的一些例子包括

  • 编程语言:全栈开发者依赖于前端语言,如HTML、CSS和JavaScript,以及后端语言,如Python、PHP、Java、C+和Ruby。MEAN开发者熟悉MongoDB、Express.js、AngularJS和Node.js。
  • 知识广度:全栈开发者与整个Web开发领域合作,例如用户界面设计、服务器端逻辑实现、数据库管理/维护以及整体应用性能和安全。MEAN开发者更专注于MEAN构建块本身。
  • 数据库:全栈开发者必须对SQL和NoSQL数据库都有良好的理解,而MEAN栈开发者只需要精通MongoDB(例如,NoSQL数据库)。

MEAN栈是否比MERN栈更好?

MEAN和MERN都是非常有价值的框架。开发者在选择两者之间时会考虑诸如对AngularJS与ReactJS的熟悉程度、项目需求、环境规模、性能需求和可扩展性等因素。

MEAN栈是否仍然有需求?

简单的回答是肯定的。2024年对MEAN栈开发者和MEAN栈的使用需求很高,并且预计需求将继续增长。此外,由于MEAN软件成本低且易于使用,越来越多的中小型企业越来越多地依赖MEAN栈开发者。

免费开始使用MongoDB Atlas

在MongoDB Atlas中免费运行MongoDB。无需信用卡。