Node.js Express 框架教程 – 10 分钟学会
在本教程中,我们将学习 Express 框架。该框架的设计宗旨是作为一款轻量级且灵活的 Node.js Web 应用程序框架,它提供了一套强大的功能,用于构建单页、多页和混合 Web 应用程序。
什么是 Express.js?
Express.js 是一个 Node.js Web 应用程序服务器框架,专门用于构建单页、多页和混合 Web 应用程序。
它已成为 Node.js 的标准服务器框架。Express 是被称为 MEAN 堆栈的后端部分。
MEAN 是一个免费开源的 JavaScript 软件堆栈,用于构建动态网站和 Web 应用程序,它包含以下组件:
1) MongoDB – 标准的 NoSQL 数据库
2) Express.js – 默认的 Web 应用程序框架
3) Angular.js – 用于 Web 应用程序的 JavaScript MVC 框架
4) Node.js – 用于可伸缩服务器端和网络应用程序的框架。
Express.js 框架使得开发能够处理多种请求类型(如 GET、PUT、POST 和 DELETE 请求)的应用程序变得非常容易。
安装和使用 Express
Express 通过 Node 包管理器 (npm) 进行安装。可以通过在命令行中执行以下行来完成:
npm install express
上述命令请求 Node 包管理器下载所需的 express 模块并进行相应的安装。
让我们使用我们新安装的 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() {});
代码解释
- 在我们代码的第一行,我们使用 `require` 函数来包含“express 模块”。
- 在开始使用 express 模块之前,我们需要创建一个它的对象。
- 这里我们创建了一个回调函数。每当有人浏览到我们 Web 应用程序的根目录(即 https://:3000)时,都会调用此函数。该回调函数将用于将字符串“Hello World”发送到网页。
- 在回调函数中,我们将字符串“Hello World”发送回客户端。`res` 参数用于将内容发送回网页。这个 `res` 参数是 `request` 模块提供的一个功能,它使我们能够将内容发送回网页。
- 然后,我们使用 `listen` 函数使我们的服务器应用程序监听端口号 3000 上的客户端请求。您可以在此处指定任何可用的端口。
如果命令执行成功,当您在浏览器中运行代码时,将显示以下输出。
输出
从输出中,
- 您可以清楚地看到,如果我们浏览到 localhost 的 URL 并在端口 3000 上访问,您将在页面上看到字符串“Hello World”显示。
- 由于我们在代码中特别指定服务器监听端口号 3000,因此在浏览此 URL 时我们可以看到输出。
什么是路由?
路由决定了应用程序如何响应客户端对特定端点的请求。
例如,客户端可以对各种 URL 发出 GET、POST、PUT 或 DELETE HTTP 请求,如下所示:
https://:3000/Books https://:3000/Students
在上面的示例中,
- 如果对第一个 URL 发出 GET 请求,那么响应理想情况下应该是一个书籍列表。
- 如果对第二个 URL 发出 GET 请求,那么响应理想情况下应该是一个学生列表。
- 因此,根据访问的 URL,Web 服务器上的不同功能将被调用,并相应地将响应发送给客户端。这就是路由的概念。
每个路由可以有一个或多个处理程序函数,当匹配到路由时,这些函数将被执行。
路由的一般语法如下所示:
app.METHOD(PATH, HANDLER)
其中:
1) `app` 是 express 模块的一个实例
2) `METHOD` 是一个 HTTP 请求方法(GET、POST、PUT 或 DELETE)
3) `PATH` 是服务器上的一个路径。
4) `HANDLER` 是当路由匹配时执行的函数。
让我们看一个在 express 中实现路由的示例。我们的示例将创建 3 个路由:
- 一个 `/Node` 路由,当访问此路由时会显示字符串“Tutorial on Node”。
- 一个 `/Angular` 路由,当访问此路由时会显示字符串“Tutorial on Angular”。
- 一个默认路由 `/`,它将显示字符串“Welcome to Guru99 Tutorials.”。
我们的基本代码将与之前的示例相同。下面的代码片段是展示路由如何实现的一个附加部分。
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'); }));
代码解释
- 在这里,我们定义了一个路由,当在浏览器中选择 URL https://:3000/Node 时将被触发。我们向该路由附加了一个回调函数,当浏览到 Node URL 时将被调用。该函数有两个参数。
- 我们将使用的主要参数是 `res` 参数,它可用于将信息发送回客户端。
- `req` 参数包含有关正在发出的请求的信息。有时,请求可能包含附加参数,因此 `req` 参数可用于查找正在发送的附加参数。
- 如果我们选择 Node 路由,我们将使用 `send` 函数将字符串“Tutorial on Node”发送回客户端。
- 在这里,我们定义了一个路由,当在浏览器中选择 URL https://:3000/Angular 时将被触发。我们向该路由附加了一个回调函数,当浏览到 Angular URL 时将被调用。
- 如果我们选择 Angular 路由,我们将使用 `send` 函数将字符串“Tutorial on Angular”发送回客户端。
- 这是当人们浏览到应用程序的路由(即 https://:3000)时选择的默认路由。当选择默认路由时,消息“Welcome to Guru99 Tutorials”将被发送到客户端。
如果命令执行成功,当您在浏览器中运行代码时,将显示以下输出。
输出
从输出中,
- 您可以清楚地看到,如果我们浏览到 localhost 的 URL 并在端口 3000 上访问,您将在页面上看到字符串“Welcome to Guru99 Tutorials”显示。
- 因为我们在代码中已经说明我们的默认 URL 将显示此消息。
从输出中,
- 您可以看到,如果 URL 已更改为 `/Node`,则会选择相应的 Node 路由,并显示字符串“Tutorial On Node”。
从输出中,
- 您可以看到,如果 URL 已更改为 `/Angular`,则会选择相应的 Node 路由,并显示字符串“Tutorial On Angular”。
使用 express.js 的示例 Web 服务器
通过上面的示例,我们已经了解了如何根据路由来决定显示什么输出。这种类型的路由是大多数现代 Web 应用程序所使用的。Web 服务器的另一部分是使用 Node.js 中的模板。
在创建快速的即时 Node 应用程序时,一种简单快捷的方法是为应用程序使用模板。市面上有许多用于制作模板的框架。在本例中,我们将以 jade 框架为例进行模板化。
Jade 通过 Node 包管理器 (npm) 进行安装。可以通过在命令行中执行以下行来完成:
npm install jade
上述命令请求 Node 包管理器下载所需的 jade 模块并进行相应的安装。
注意:在 Node 的最新版本中,jade 已被弃用。请改用 pug。
让我们使用我们新安装的 jade 框架创建一些基本模板。
步骤 1) 第一步是创建一个 jade 模板。创建一个名为 index.jade 的文件,并将以下代码插入其中。确保在“views”文件夹中创建该文件。
- 在这里,我们指定当调用此模板时,页面的标题将更改为传递的任何值。
- 我们还指定 `header` 标签中的文本将被替换为传递给 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() {});
代码解释
- 在应用程序中需要指定的第一个是用于渲染模板的“视图引擎”。由于我们将使用 jade 来渲染我们的模板,因此我们相应地指定它。
- `render` 函数用于渲染网页。在我们的示例中,我们正在渲染之前创建的模板(index.jade)。
- 我们将“Guru99”和“Welcome”的值分别传递给“title”和“message”参数。这些值将被 index.jade 模板中声明的 `title` 和 `message` 参数替换。
如果命令执行成功,当您在浏览器中运行代码时,将显示以下输出。
输出
从输出中,
- 我们可以看到页面的标题设置为“Guru99”,页面的标题设置为“Welcome”。
- 这是因为 jade 模板在我们的 Node.js 应用程序中被调用。
摘要
- Express 框架是开发 Node.js 应用程序最常用的框架。Express 框架建立在 Node.js 框架之上,有助于加速服务器端应用程序的开发。
- 路由用于根据发出的请求将用户重定向到 Web 应用程序的不同部分。每个路由的响应可以根据需要显示的内容而有所不同。
- 模板可用于高效地注入内容。Jade 是 Node.js 应用程序中最流行的模板引擎之一。