Node.js Express.js 框架教程

⚡ 智能摘要

Express.js 是一个极简的 Node.js Web 应用程序框架,它在核心 HTTP 模块中添加了路由、中间件和模板渲染功能,因此单页、多页和混合应用程序只需很少的代码即可部署到服务器上。

  • 🔘 MEAN 技术栈角色: Express.js 除了提供后端层之外,还提供了其他功能。 MongoDBAngularJS 和 Node.js。
  • ☑️ 安装方式: npm install express 从 Node 包管理器拉取框架。
  • 路由: app.METHOD(PATH, HANDLER) 映射每个 URL 并将 HTTP 谓词分配给一个处理程序。
  • 🧪 模板: app.set('view engine')加上res.render将数据馈送到视图文件中。
  • 🛠️ 现代形式: Express 5 接受返回 promise 的处理程序,并捆绑 express.json()。
  • 📊 版本说明: Jade 更名为 Pug,Node.js 24 是当前活跃的 LTS 版本。

Node.js Express.js 框架教程

在本教程中,我们将学习 Express 框架。该框架的设计理念是将其作为一个简洁灵活的 Node.js Web 应用程序框架,提供一套强大的功能,用于构建单页、多页和混合型 Web 应用程序。

什么是 Express.js?

Express.js 是一个 Node.js Web 应用服务器框架,专门用于构建单页、多页和混合 Web 应用。

它已成为Node.js的标准服务器框架。Express是MEAN技术栈的后端部分。

Express 在核心 Node.js HTTP 之上构建了路由和中间件层, 以及事件 API。

MEAN 是一个免费且开源的 JavaScript 用于构建动态网站和 Web 应用程序的软件堆栈,具有以下组件;

1) MongoDB — 标准 NoSQL 数据库

2) Express.js — 默认的 Web 应用程序框架

3) AngularJS - 那个 Java用于 Web 应用程序的脚本 MVC 框架

4) Node.js — 用于可扩展服务器端和网络应用程序的框架。

Express.js 框架使得开发应用程序变得非常容易,该应用程序可用于处理多种类型的请求,如 GET、PUT、POST 和 DELETE 请求。

安装和使用 Express

Express 通过 Node 包管理器进行安装。这可以通过在命令行中执行以下行来完成

npm 安装快递

上述命令请求 Node 包管理器下载所需的 Express 版本。 模块 并按要求进行安装。

版本说明: npm 现在安装的是 Express 5.2;但许多项目仍然使用 Express 4。以下示例均在 npm 上运行。 支持的 Node.js 版本.

让我们使用新安装的 Express 框架并创建一个简单的“Hello World”应用程序。

我们的应用程序将创建一个简单的 服务器模块 它将监听端口号 3000。在我们的示例中,如果通过浏览器向该端口号发出请求,则服务器应用程序将向客户端发送“Hello World”响应。

带注释的 Express Hello World 服务器代码,监听端口 3000

var express=require('express');
var app=express();
app.get('/',function(req,res)
{
res.send('Hello World!');
});
var server=app.listen(3000,function() {});

Code 说明:

  1. 在我们的第一行代码中,我们使用 require 函数来包含“express 模块”。
  2. 在我们开始使用 express 模块之前,我们需要创建它的一个对象。
  3. 这里我们创建一个回调函数。每当有人访问我们Web应用程序的根目录(即http://localhost:3000)时,都会调用此函数。回调函数将用于向网页发送字符串“Hello World”。
  4. 在回调函数中,我们将字符串“Hello World”发送回客户端。'res' 参数用于将内容发送回网页。此 'res' 参数是由 'request' 模块提供的,用于将内容发送回网页。
  5. 然后,我们使用 listen 函数让服务器应用程序监听 3000 端口上的客户端请求。您可以在这里指定任何可用的端口。

如果命令成功执行,则在浏览器中运行代码时将显示以下输出。

输出:

浏览器显示 Express 服务器在 3000 端口返回的 Hello World 信息

从输出来看,

  • 您可以清楚地看到,如果您浏览到…… URL 在 localhost 的 3000 端口上,您将在页面上看到字符串“Hello World”。
  • 因为我们的代码中明确指定服务器监听 3000 端口,所以我们可以通过浏览此网址查看输出。 URL.

什么是路线?

单个根路由只是起点。

路由决定了应用程序如何响应客户端对特定端点的请求。

例如,客户端可以针对各种情况发出 GET、POST、PUT 或 DELETE HTTP 请求。 URL 例如下图所示;

http://localhost:3000/Books
http://localhost:3000/Students

在上面的示例中,

  • 如果对第一个 URL那么,理想情况下,回复应该是一份书单。
  • 如果对第二个对象发出 GET 请求 URL那么,理想情况下,回复应该是一份学生名单。
  • 所以基于 URL 当访问某个特定地址时,Web 服务器上的不同功能将被调用,并相应地将响应发送给客户端。这就是路由的概念。

每个路由可以有一个或多个处理函数,当路由匹配时执行。

路线的一般语法如下所示

app.METHOD(PATH, HANDLER)

其中,

1)app 是 express 模块的一个实例

2)METHOD 是 HTTP 请求方法(GET、POST、PUT 或 DELETE)

3)PATH 是服务器上的路径。

4)HANDLER是路由匹配的时候执行的函数。

电话联系 请求 目的
app.get(PATH, HANDLER) 的GET 了解
app.post(PATH, HANDLER) 解决方案&帖子 创建
app.put(PATH, HANDLER) PUT 更换
app.delete(PATH, HANDLER) 删除 删除
app.route(PATH) 链式 群组处理程序
app.use(HANDLER) 任何 安装中间件

⚠️ 表达5 注意事项: 这些签名没有改变,但是 app.del() 变成了 app.delete(),res.sendfile() 变成了 res.sendFile(),通配符现在需要像 /*splat 这样的名称。

让我们来看一个如何在 Express 中实现路由的例子。我们的示例将创建 3 条路由。

  1. /Node 路由,当访问此路由时,将显示字符串“Tutorial on Node”
  2. /Angular 路由,当访问此路由时,将显示字符串“Tutorial on Angular”
  3. 默认路由 / 将显示字符串“欢迎来到 Guru99 个教程。”

我们的基本代码将与前面的示例保持一致。下面的代码片段是一个附加代码,用于展示如何实现路由。

定义了 Node、Angular 和默认路由的带注释的 Express 路由代码

var express = require('express');
var app = express();
app.route('/Node').get(function(req,res)
{
    res.send("Tutorial on Node");
});
app.route('/Angular').get(function(req,res)
{
    res.send("Tutorial on Angular");
});
app.get('/',function(req,res){
    res.send('Welcome to Guru99 Tutorials');
});

Code 说明:

  1. 这里我们定义了一条路线,如果 URL http://localhost:3000/Node is selected in the browser. To the route, we are attaching a callback function which will be called when we browse to the Node URL该函数有两个参数。
    • 我们将使用的主要参数是“res”参数,它可用于将信息发送回客户端。
    • 'req' 参数包含有关所发出请求的信息。有时,附加参数可能会作为所发出请求的一部分发送,因此可以使用 'req' 参数来查找所发送的附加参数。
  2. 如果选择了 Node 路由,我们将使用发送函数将字符串“Tutorial on Node”发送回客户端。
  3. 这里我们定义了一条路线,如果 URL http://localhost:3000/Angular is selected in the browser. To the route, we are attaching a callback function which will be called when we browse to the Angular URL.
  4. 如果选择了 Angular 路由,我们将使用发送函数将字符串“Tutorial on Angular”发送回客户端。
  5. 这是访问应用程序根目录(http://localhost:3000)时选择的默认路由。选择默认路由时,将显示消息“欢迎来到”。 Guru我们将向客户发送“99 个教程”。

如果命令成功执行,则在浏览器中运行代码时将显示以下输出。

输出:

浏览器显示“欢迎” Guru99 个教程,默认 Express 路线

从输出来看,

  • 您可以清楚地看到,如果您浏览到…… URL 在本地主机的 3000 端口上,您将看到字符串“欢迎来到 Guru页面上显示了 99 个教程。
  • 因为在我们的代码中,我们已经提到过我们的默认值 URL 将显示此消息。

接下来,浏览到 /Node。

浏览器显示 Node 路由返回的 Node 教程

从输出来看,

  • 你可以看到,如果 URL 已更改为 /Node,则会选择相应的 Node 路由并显示字符串“Node 教程”。

然后浏览到 /Angular。

浏览器显示 Angular 教程,该教程由 Angular 路由返回

从输出来看,

  • 你可以看到,如果 URL 已更改为 /Angular,将选择相应的 Node 路由,并显示字符串“Angular 教程”。

使用 express.js 的示例 Web 服务器

从上面的例子可以看出,我们可以根据路由来决定显示哪些输出。这种路由方式被大多数现代 Web 应用程序所采用。Web 服务器的另一部分是关于在 Node.js 中使用模板。

在快速创建 Node.js 应用程序时,使用应用程序模板是一种简单快捷的方法。市面上有很多用于创建模板的框架。在这里,我们将以 Jade 模板框架为例进行说明。

Jade 通过 Node 包管理器安装。这可以通过在命令行中执行以下命令来完成。

npm 安装 jade

上述命令请求 Node 包管理器下载所需的 Jade 模块并进行相应的安装。

注意: 在最新版本的 Node 中,jade 已被弃用。请改用 pug。

⚠️ 现代对应词: 安装 泥料将 index.jade 重命名为 index.pug,并设置 app.set('view engine','pug')。jade 包不再接收更新;以下步骤仍然有效。

让我们使用新安装的 Jade 框架创建一些基本模板。

步骤1) 第一步是创建 Jade 模板。创建一个名为 index.jade 的文件,并将以下代码插入其中。请确保将该文件创建在“views”文件夹中。

index.jade 模板标记,包含标题和页眉占位符

  1. 这里我们指定当调用此模板时,页面的标题将更改为传递的任何值。
  2. 我们还指定,标题标签中的文本将被替换为 Jade 模板中传递的任何内容。

以下是渲染该图像的应用程序代码。

带注释的 Express 代码设置 Jade 视图引擎和渲染索引

var express=require('express');
var app=express();
app.set('view engine','jade');
app.get('/',function(req,res)
{
res.render('index',
{title:'Guru99',message:'Welcome'})
});
var server=app.listen(3000,function() {});

Code 说明:

  1. 在应用程序中首先要指定的是用于渲染模板的“视图引擎”。由于我们将使用 Jade 来渲染模板,因此需要相应地进行指定。
  2. render 函数用于渲染网页。在我们的示例中,我们渲染的是之前创建的模板 (index.jade)。
  3. 我们正在传递“Guru99”和“欢迎”分别对应参数“title”和“message”。这些值将被index.jade模板中声明的“title”和“message”参数替换。

如果命令成功执行,则在浏览器中运行代码时将显示以下输出。

输出:

浏览器渲染带有标题的 Jade 模板 Guru99 和标题 欢迎

从输出来看,

  • 我们可以看到页面标题被设置为“Guru99”,页面标题设置为“欢迎”。
  • 这是因为我们的 Node.js 应用程序中调用了 Jade 模板。

常见问题

中间件 这些函数接收 req、res 和 next 参数,然后按注册顺序运行。它们负责处理日志记录、响应体解析、身份验证和错误处理,并且每个函数都必须结束响应或调用 next() 函数。

不。Express 将解析器打包在一起,因此 express.json() 和 express.urlencoded() 取代了单独的解析器。 人体解析器 依赖项。已移除组合的 bodyParser() 辅助函数,因此在解析器运行之前,req.body 将保持未定义状态。

表达5 使处理程序能够感知 Promise,移除 app.del() 和 res.sendfile(),升级路径匹配,使通配符需要像 /*splat 这样的名称,并将 urlencoded extended 默认设置为 false。

在 Express 5 中,被拒绝的 Promise 会自动传递给错误处理中间件,因此不再需要手动调用 `next(err)`。而 Express 4 则需要在每个异步操作内部显式地使用 `try/catch` 语句。 回电话.

泥料由于商标原因,Jade 已更名,并且 jade 包已被弃用。将现有模板重命名为 .pug 并切换视图引擎后,它们仍可继续使用。

Node.js 24 是 2026 年的活跃 LTS 版本,而 Node.js 22 仍处于维护阶段。 安装 其中之一。Express 5 需要 Node.js 18 或更高版本。

机器学习扫描器读取路由定义和中间件顺序,然后标记缺失的身份验证和未验证的情况。 JavaScript 输入和宽松的 CORS 规则。每一项发现仍需人工审核确认。

GitHub 副驾驶 类似的代理助手只需一个简短的提示即可生成路由文件、验证中间件和控制器存根。每个生成的路由仍然需要 测试 在发布之前。

总结一下这篇文章: