技术堆栈
在深入了解 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 堆栈之间进行选择:
