Node.js Express.js 框架教程
⚡ 智能摘要
Express.js 是一个极简的 Node.js Web 应用程序框架,它在核心 HTTP 模块中添加了路由、中间件和模板渲染功能,因此单页、多页和混合应用程序只需很少的代码即可部署到服务器上。
在本教程中,我们将学习 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”响应。
var express=require('express'); var app=express(); app.get('/',function(req,res) { res.send('Hello World!'); }); var server=app.listen(3000,function() {});
Code 说明:
- 在我们的第一行代码中,我们使用 require 函数来包含“express 模块”。
- 在我们开始使用 express 模块之前,我们需要创建它的一个对象。
- 这里我们创建一个回调函数。每当有人访问我们Web应用程序的根目录(即http://localhost:3000)时,都会调用此函数。回调函数将用于向网页发送字符串“Hello World”。
- 在回调函数中,我们将字符串“Hello World”发送回客户端。'res' 参数用于将内容发送回网页。此 'res' 参数是由 'request' 模块提供的,用于将内容发送回网页。
- 然后,我们使用 listen 函数让服务器应用程序监听 3000 端口上的客户端请求。您可以在这里指定任何可用的端口。
如果命令成功执行,则在浏览器中运行代码时将显示以下输出。
输出:
从输出来看,
- 您可以清楚地看到,如果您浏览到…… 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 条路由。
- /Node 路由,当访问此路由时,将显示字符串“Tutorial on Node”
- /Angular 路由,当访问此路由时,将显示字符串“Tutorial on Angular”
- 默认路由 / 将显示字符串“欢迎来到 Guru99 个教程。”
我们的基本代码将与前面的示例保持一致。下面的代码片段是一个附加代码,用于展示如何实现路由。
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 说明:
- 这里我们定义了一条路线,如果 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' 参数来查找所发送的附加参数。
- 如果选择了 Node 路由,我们将使用发送函数将字符串“Tutorial on Node”发送回客户端。
- 这里我们定义了一条路线,如果 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.
- 如果选择了 Angular 路由,我们将使用发送函数将字符串“Tutorial on Angular”发送回客户端。
- 这是访问应用程序根目录(http://localhost:3000)时选择的默认路由。选择默认路由时,将显示消息“欢迎来到”。 Guru我们将向客户发送“99 个教程”。
如果命令成功执行,则在浏览器中运行代码时将显示以下输出。
输出:
从输出来看,
- 您可以清楚地看到,如果您浏览到…… URL 在本地主机的 3000 端口上,您将看到字符串“欢迎来到 Guru页面上显示了 99 个教程。
- 因为在我们的代码中,我们已经提到过我们的默认值 URL 将显示此消息。
接下来,浏览到 /Node。
从输出来看,
- 你可以看到,如果 URL 已更改为 /Node,则会选择相应的 Node 路由并显示字符串“Node 教程”。
然后浏览到 /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”文件夹中。
- 这里我们指定当调用此模板时,页面的标题将更改为传递的任何值。
- 我们还指定,标题标签中的文本将被替换为 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 说明:
- 在应用程序中首先要指定的是用于渲染模板的“视图引擎”。由于我们将使用 Jade 来渲染模板,因此需要相应地进行指定。
- render 函数用于渲染网页。在我们的示例中,我们渲染的是之前创建的模板 (index.jade)。
- 我们正在传递“Guru99”和“欢迎”分别对应参数“title”和“message”。这些值将被index.jade模板中声明的“title”和“message”参数替换。
如果命令成功执行,则在浏览器中运行代码时将显示以下输出。
输出:
从输出来看,
- 我们可以看到页面标题被设置为“Guru99”,页面标题设置为“欢迎”。
- 这是因为我们的 Node.js 应用程序中调用了 Jade 模板。









