公告MongoDB 8.0 震撼发布,速度再创新高!阅读更多 >>

mern stack 解释

MERN 是 MEAN 堆栈(mongodb、Express、Angular、Node)的几种变体之一,其中传统的 Angular.js 前端框架已被 React.js 取代。其他变体包括 MEVN(mongodb、Express、Vue、Node)和任何前端 JavaScript 框架。

准备好进行下一步了吗?单击下方设置您的免费 mongodb atlas 帐户,并试用我们的 mern stack 教程,以立即创建全栈 MERN 应用程序。

开始免费使用

技术堆栈

在深入了解 MERN 堆栈之前,让我们快速了解一下什么是技术堆栈。技术堆栈是您为构建 Web 应用程序、移动应用程序或类似应用程序而选择和使用的一组技术。一个好的技术堆栈必须能提供无缝的用户体验,并具有可扩展性和成本效益。典型的技术堆栈包含前端、后端和数据库,被称为全技术栈。

通常,基本的前端或用户界面技术保持不变,即 HTML、CSS 和 JavaScript。根据项目要求,您可以使用基于这些用户界面技术构建的库和框架,例如 React 或 Angular。

后端由应用程序逻辑所在的服务器组成。您可以使用一种或多种编程语言(例如 JavaScript、 Java、 Python )编写应用程序逻辑,也可以使用 Django、Spring、 Express.js 等框架。要执行程序,您的应用程序需要像 Node.js、JRE(Java 运行时环境)这样的运行时。

数据库是存储中心,存储所有与应用程序相关的数据。您可以选择将数据存储在表格结构中(使用关系数据库系统),也可以选择使用非关系型结构(也称为 NoSQL),例如文档结构、图表结构等,并相应地选择数据库。数据库的一些示例有 MongoDB 、Oracle、MySQL。

什么是 MERN 堆栈?

技术堆栈可以是定制的(开发者可以根据项目要求选择技术),也可以是预构建的(技术已经预先确定)。

MERN 是基于 JavaScript 技术的预构建技术堆栈。MERN 是 MongoDB、Express、React 和 Node 的首字母缩写,这四项关键技术构成了该堆栈。

  • MongoDB — 文档数据库
  • Express(.js) — Node.js Web 框架
  • React(.js) — 客户端 JavaScript 框架
  • Node(.js) — 首选 JavaScript Web 服务器(运行时)

Express 和 Node 构成了中间(应用程序)层。Express.js 是一个服务器端 Web 框架,Node.js 是流行且功能强大的 JavaScript 服务器平台。无论您选择哪种变体,ME(RVA)N 都是使用 JavaScript 和 JSON 的理想方法。

MERN 堆栈如何工作?

MERN 架构允许您完全使用 JavaScript 和 JSON 轻松构建三层架构(前端、后端、数据库)。

React.js 前端

MERN 堆栈的顶层是 React.js,这是一个声明式 JavaScript 框架,用于在 HTML 中创建动态客户端应用程序。React 允许您通过简单的组件构建复杂的界面,将它们连接到后端服务器上的数据,并将它们呈现为 HTML。

React 的强项是用最少的代码和麻烦处理有状态、数据驱动的界面,并且它拥有现代 Web 框架所应具备的所有功能:对表单、错误处理、事件、列表等的强大支持。

Express.js 和 Node.js 服务器层

下一层是 Express.js 服务器端框架,它在 Node.js 服务器内运行。Express.js 标榜自己是一个“快速、不固执己见、极简主义的 Node.js Web 框架”,而这确实是它的本质。Express.js 具有强大的 URL 路由(将传入 URL 与服务器功能相匹配)以及处理 HTTP 请求和响应的模型。

通过从 React.js 前端发出 XML HTTP 请求 (XHR)、GET 或 POST,您可以连接到为您的应用程序提供支持的 Express.js 函数。这些函数又使用 MongoDB 的 Node.js 驱动程序来访问和更新 MongoDB 数据库中的数据。

MongoDB 数据库层

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

这就是 MongoDB 的作用所在:在 React.js 前端创建的 JSON 文档可以发送到 Express.js 服务器,在那里可以进行处理并(假设它们有效)直接存储到 MongoDB 中以便以后检索。同样,如果您在云中构建,您需要看看 MongoDB Atlas。如果您正在考虑建立自己的 MERN 堆栈,请继续阅读!

使用 MERN 堆栈的简单请求/响应示例

一个典型的 HTTP 请求(来自客户端)执行 4 种操作之一——POST、GET、PUT、DELETE,分别对应于四种数据库操作——创建、读取、更新和删除(CRUD)。为了满足这些请求, Express .js 提供了存储所需参数的请求和响应对象。HTTP 请求存储最终用户提供的数据, HTTP 响应存储从数据库检索到的数据。

使用 MongoDB Node.js 驱动程序,您可以通过几个简单的步骤轻松将 MongoDB 部署连接到应用程序。

MERN 堆栈最重要的功能之一是所有技术都以相同的格式存储数据。

前端层 React 将数据存储为 JavaScript 对象,后端(应用程序)层使用 JavaScript 代码,数据层 MongoDB 以 BSON(Binary JavaScript ON)格式存储数据。Express 使用 .json() 方法在 JS 和 JSON 之间转换数据。

Node.js 允许开发者使用 JavaScript 编写后端(服务器端)应用程序逻辑。尽管 Node.js 提供了核心 http 模块,但在 Express 中编写相同的模块可以提供更简洁的代码体验。Express 还提供了强大的路由功能,可以从正确的终结点获取所需的数据,开发者无需为路由编写明确的代码。

由于端到端都使用同一种语言(JavaScript)编写代码,因此节省了大量在层与层之间转换时所花费的时间。

假设某位客户想要通过在线门户更新其手机号码。使用 React .js 构建的前端会有一个表单,用户可以在其中输入手机号码。React 使用“useState” Hook 将客户输入的手机号码设置到请求参数中。

Express.js 代码从 http put 请求中获取手机号码,将其映射到应用程序的数据模型模式,并应用相应的方法(例如,findByIdAndUpdate())执行更新操作。然后通过 http 响应对象发送响应,其中包含成功/失败消息。

MERN 堆栈教程页面上提供了完整的示例。

MERN 堆栈与全栈开发

MERN 堆栈是一种全栈,其中的技术层是预先定义的。全栈开发者的学习曲线更高,因为他们需要熟练掌握多种技术,而 MERN 堆栈开发者只需要了解相应的技术。以下一些显著的差异将帮助您根据项目需求在自定义全栈和 MERN 堆栈之间进行选择:

mern stack

  • 预先定义并已知能良好协同工作的技术堆栈
  • 重点是 JavaScript 以及基于 JavaScript 的技术和框架
  • 精简统一的开发方法
  • 由于可以跨域使用单一语言组件,提高了代码的可重用性

全栈

  • 设计人员根据项目要求选择不同的技术
  • 需要根据项目学习更广泛的技能组合
  • 在选择开发工具和框架方面有更多灵活性
  • 由于开发者可以处理应用程序的不同方面,因此提高了灵活性和多功能性

何时选择 mern stack?

如果您的项目时间紧迫且需求明确,那么 mern stack 是一个理想的选择,它可以节省时间和成本,帮助开发者快速上手,因为他们只需专注于学习一种技术。此外,由于 mern stack 采用结构化、完善的方法并提供丰富的文档,使用 mern stack 可以更轻松地对项目进行长期维护。

mern stack 适用于任何可能的用例或项目,因为所有组件 (MERN) 都具有强大的功能和特性。唯一不能选择 mern stack 的情况是当您想使用 JavaScript 以外的技术时。

为什么选择 mern stack?

让我们从 mongodb 开始,它是 mern stack 根部的文档数据库。mongodb 用于本地存储 JSON 数据。(从技术上讲,它使用名为 BSON 的 JSON 二进制版本。)从命令行界面到查询语言,一切都是基于 JSON 和 JavaScript 构建的。

mongodb 与 Node.js 配合使用效果极佳,能让应用程序各层的存储、操作和表示 JSON 数据变得异常简单。对于云原生应用程序,只需点击几下按钮,mongodb atlas 即可在您选择的云提供商上轻松建立一个自动扩展的 mongodb 集群。

Express.js(在 Node.js 上运行)和 React.js 使 JavaScript/JSON 应用程序 MERN 全栈变得完整。。Express.js 是一个服务器端应用程序框架,它包装 HTTP 请求和响应,并可轻松将 URL 映射到服务器端功能。React.js 是一个前端 JavaScript 框架,用于在 HTML 中构建交互式用户界面并与远程服务器通信。

这种组合意味着 JSON 数据可以自然地从前端流向后端,使其更易于构建,并且调试起来也相当简单。此外,您只需了解一种编程语言和 JSON 文档结构,就能了解整个系统!

MERN 是当今希望实现快速开发的 Web 开发者(尤其是有 React.js 经验的开发者)的首选堆栈。

MERN 使用案例

与任何 Web 堆栈一样,您可以在 MERN 中构建任何您想要的东西——尽管它最适合 JSON 密集型、云原生且具有动态 Web 界面的情况。示例包括工作流管理、新闻聚合、待办事项应用和日历、互动论坛或社交产品,以及您能想到的其他任何东西!

总结

mern stack 旨在通过预先确定技术来简化整个技术堆栈。开发者和设计人员无需再为某个业务案例应采用何种技术而烦恼。此外,他们不需要学习不同技术或雇用了解不同技术的多个人,也不需要把责任推给一个人。借助 mern stack,任何人只需了解少量技术就可以构建简单或复杂的应用程序。这样可以加快生产速度,节省总体成本,同时不影响可扩展性、性能和安全性。

常见问题解答

免费试用 mongodb atlas

使用 mongodb atlas 在云端免费运行 mongodb。无需使用信用卡。
免费试用!