Express.js(或简称Express)是一个基于Node.js的Web应用程序服务器框架,MongoDB是一个通用文档数据库平台。您可以将它们结合起来构建一个存储在MongoDB中的Web应用程序。由于Express是运行在Node.js之上的模块,因此您可以使用MongoDB Node.js驱动程序连接到任何MongoDB数据库实例并进行查询。
Express是Node.js的一个最小化Web应用程序框架。它被设计为快速、最小化且模块化。Express是一个免费和开源的MIT许可项目。它是OpenJS基金会的部分,并拥有一个活跃的贡献者社区。
Express扩展了Node.js的http
包,增加了路由、中间件和视图等功能。Express通常用于创建API,尤其是REST API。以下示例使用Express实现了一个类似REST的API,仅用20行代码!
const express = require('express');
const app = express();
app.get('/products', (req, res) => {
return res.send('GET HTTP method on product resource');
});
app.post('/products', (req, res) => {
return res.send('POST HTTP method on product resource');
});
app.put('/products/:productId', (req, res) => {
return res.send(`PUT HTTP method on product/${req.params.productId} resource`);
});
app.delete('/products/:productId', (req, res) => {
return res.send(`DELETE HTTP method on product/${req.params.productId} resource`);
});
app.listen(3000, () => console.log('Server is running on port 3000'));
上面的代码使用了与HTTP方法相对应的app
对象的方法——GET、POST、PUT和DELETE。例如,app.get()
方法用于处理对/products
路由的GET请求。同样,app.put()
方法用于处理对/products/:productId
路由的PUT请求,其中:productId
是从URL中提取的参数。
您可以在简单的路由示例之上构建,以处理真实数据。一个常见的用例是创建一个存储在数据库中的REST API,例如MongoDB。API公开的不同资源作为端点,代表数据库中的集合。例如,/products
端点代表存储在数据库中的产品集合。
有关如何使用Express和MongoDB构建REST API的完整教程,请参阅使用Express、Node和MongoDB构建REST API。
您可以通过安装MongoDB Node.js驱动程序在Express应用程序中使用MongoDB。MongoDB Node.js驱动程序是一个Node.js模块,它允许您将应用程序连接到MongoDB并处理您的数据。
如果您正在构建REST API,将路由逻辑从数据存储逻辑分离出来被认为是一种良好的实践。例如,您可能有一个处理/products
资源请求的Product控制器,以及一个用于存储数据的Product
模型。基于Express的许多流行的JavaScript框架都能为您做到这一点。让我们来看看其中的一些。
Express是一个经过超过10年发展的稳健解决方案。它是构建API,特别是REST API的一个很好的选择。然而,JavaScript生态系统始终在不断发展。在Express之后,许多JavaScript框架被创建出来,以提供更全面、更强大的功能集。其中一些框架,如NestJS,集成了Express,以提供类似的路由和中间件能力。其他框架,如Koa和Fastify,被认为是受Express启发的,提供了比后者更高效、更适合开发者的解决方案。让我们更详细地了解一下这些框架。
Koa是一个轻量级的Node.js框架,由Express的原始团队创建。Koa与Express之间的主要区别在于它们实现中间件的方式。Koa没有内置的中间件机制,而是依赖于promises和async函数来控制程序流程。这使您不再依赖回调,从而帮助您摆脱所谓的“回调地狱”。
另一个区别是Koa本身不提供开箱即用的路由。相反,您可以使用如koa-router
或koa-route
这样的第三方Node模块来实现路由。
Fastify是一个针对Node的通用服务器框架,以其高度优化的HTTP API而著称。该框架旨在尽可能快,与其他Node框架的基准测试证实了这一点。
此外,Fastify提供可扩展的插件架构和不断增长的插件生态系统。该架构旨在确保插件独立性和封装。这消除了由交叉依赖引起的大量问题,并允许您在不担心破坏应用程序其他部分的情况下重构代码。
NestJS(有时被称为Nest)是一个框架,它为Express和Fastify等框架提供了额外的抽象层次。它带有一个开箱即用的应用程序架构,可以帮助您快速迭代和扩展。NestJS的架构受到了Angular的极大启发。与Angular类似,NestJS完全使用TypeScript构建,NestJS应用程序也是用TypeScript编写的。
NestJS使用Express提供HTTP能力。然而,很容易将Express替换为其他框架,如Fastify,利用后者的更好性能。
如上所述,NestJS带有一套内置的架构解决方案,包括数据库通信的解决方案。NestJS提供了与Sequelize和TypeORM的集成,可以用来连接SQL或非关系型数据库,如MongoDB。NestJS团队还支持Mongoose集成。然而,NestJS足够灵活,您也可以通过加载其原生的Node.js驱动程序来连接到数据库。
MEAN (MongoDB, Express, Angular, 和 Node.js) 和 MERN (MongoDB, Express, React, 和 Node.js) 是构建端到端 Web 应用程序流行的 JavaScript 技术堆栈。Express 是构成 MEAN 和 MERN 堆栈的四个基本技术之一。其他三个是
在构建 MEAN/MERN 应用程序时,Express 用于构建 REST API。该 API 用于客户端应用程序和服务器端应用程序之间的通信。
Express 是构建 REST API 的绝佳选择。因为 Express 运行在 Node.js 上,所以您可以使用 MongoDB Node.js 驱动程序轻松连接到 MongoDB 实例。如果您想了解更多,请遵循此完整教程 使用 Express, Node 和 MongoDB 构建 REST API。