这些“标准化构建块”中最常见的例子之一被称为MEAN栈。了解MEAN栈是什么,它是如何工作的,MEAN栈的优点和缺点,以及它通常如何使用。
MEAN栈是一个用于开发可扩展Web应用程序的JavaScript框架。术语MEAN是MongoDB、Express、Angular和Node的缩写——构成技术堆栈层的四种关键技术。
目录
虽然 MEAN 栈是构建 Web 应用程序最受欢迎的技术概念之一,但还有其他替代方案,包括
MEAN、MERN 和 MEVN 之间的主要区别在于,它们各自为前端(例如,客户端)开发提供不同的选项,同时仍然使用 MongoDB、Express.js 和 Node.js 进行后端(例如,服务器端)开发。帮助开发者确定使用哪个技术栈的因素包括
MEAN 架构旨在使在 JavaScript 中构建 Web 应用程序和处理 JSON 变得非常容易。
在 MEAN 栈的最顶层是 Angular.js,它自称为“JavaScript MVW 框架”(MVW 代表“模型视图和其他”)。
Angular.js 允许您通过在 HTML 标签中添加元数据来扩展 HTML 标签,从而比使用静态 HTML 和 JavaScript(或 jQuery)自行构建更有效地创建动态、交互式的 Web 体验。
Angular 拥有前端 JavaScript 框架应有的所有功能和特性,包括表单验证、本地化和与后端服务的通信。
下一层是运行在 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 数据库中的数据。
如果您的应用程序存储任何数据(用户资料、内容、评论、上传、事件等),那么您将需要一个与Angular、Express和Node一样容易使用的数据库。
这正是MongoDB的用武之地:在您的Angular.js前端创建的JSON文档可以发送到Express.js服务器,在那里它们可以被处理,并且(假设它们是有效的)可以直接存储在MongoDB中以便稍后检索。
如果您想轻松地充分利用MongoDB,您将想查看MongoDB Atlas。这将为您提供一键式内置全面数据库安全和跨云可伸缩性。更多内容将在本页稍后介绍。
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堆栈的所有组件都是开源的,因此为开发者提供了免费的机会。
JavaScript是一种伟大的现代语言,但最初它并不是为了构建后端服务器而设计的。由于MEAN堆栈的基础是JavaScript,包括后端服务器,因此它可能由于JavaScript的特性而在扩展规模时出现并发性和性能问题。
此外,由于开发机会非常快,业务和服务器逻辑可能会遭受不良隔离的困扰,从而使潜在的乱炖代码和不良做法成为现实。
最后,尽管有许多指南和教程,但它们通常不会包括适合此堆栈的具体JS编码指南。因此,为某个应用程序工作得非常好的东西可能会为另一个应用程序带来问题。
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 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堆栈中最有价值的层:数据层。
我们建议使用MongoDB Atlas与MEAN堆栈一起使用,因为Atlas内置了凭证、防火墙和端到端加密,这是保护您的MongoDB的最佳基础。
此外,MEAN堆栈有明确的三个层级分离,如果与最佳实践和正确的网络隔离一起使用,应防止您的最终用户访问业务逻辑,更不用说您的数据库层。因此,您的应用程序默认设计为避免恶意用户交互,从而降低您的应用风险(查询注入、代码操纵、端口欺骗等)。
MEAN堆栈的基础是直观的JavaScript开发,并且对于MongoDB这样的JSON结构是自然的数据库,这使得此解决方案易于适应和维护。许多开发者发现MEAN堆栈比其他选项更容易学习。
学习MEAN堆栈的容易程度和速度还取决于几个因素
话虽如此,学习MEAN堆栈并不一定需要所有这些知识。网上有大量的教程、课程和社区可以帮助您获得MEAN堆栈开发所需的知识和技能。
全栈和MEAN栈有什么区别?MEAN栈和全栈都包括前端(例如,客户端)、后端(服务器端)和数据库开发。然而,全栈开发者的知识通常比MEAN栈构建块更广泛和深入。全栈开发者额外知识的一些例子包括