源码:230509.zip
Express 简介
Express 是一个基于 Node.js 平台的快速、简洁且灵活的 Web 应用程序框架。它提供了一系列功能,使得开发 Web 应用和 API 变得更容易、高效。Express 的主要特点有:
- 轻量化:Express 是一个轻量级框架,只提供了最基本的 Web 开发功能,使得应用程序更易于维护且运行速度更快。
- 中间件:Express 使用了中间件的概念,可以通过简单的函数对请求和响应对象进行处理和修改。这使得开发者可以轻松地实现各种功能,如日志记录、身份验证、静态文件服务等。
- 路由:Express 提供了强大的路由功能,支持动态路由参数、正则表达式匹配等。这使得开发者可以轻松地创建复杂的 URL 结构和处理各种 HTTP 请求。
- 模板引擎:Express 支持多种模板引擎,如 Pug、EJS、Handlebars 等,可以轻松地生成动态 HTML 页面。
- 易于扩展:Express 的模块化设计使得其易于扩展。开发者可以通过安装第三方模块来实现各种功能,同时也可以创建自定义模块。
Express 安装
要开始使用 Express,首先需要安装 Node.js,然后通过 npm(Node 包管理器)安装 Express:npm install express
demos
demo | Hello World!
接下来,可以创建一个简单的 Express 应用:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
以上代码创建了一个简单的 Express 应用,监听 3000 端口,并在根 URL(’/‘)上返回 “Hello World!”。运行这个应用后,可以在浏览器中访问 http://localhost:3000 查看结果。
const express = require('express');
这一行代码导入了 express
模块。require()
函数用于在 Node.js 中加载模块。这里,我们将加载的 express
模块赋值给一个名为 express
的常量。
const app = express();
这一行代码调用了 express()
函数,创建了一个 Express 应用实例。这个实例包含了 Express 提供的各种方法和属性,用于构建和配置 Web 应用。
const port = 3000;
这一行代码定义了一个常量 port
,用于存储我们的应用将要监听的端口号。这里,我们将端口号设置为 3000。
app.get('/', (req, res) => { res.send('Hello World!'); });
这一行代码定义了一个路由。app.get()
方法用于处理 HTTP GET 请求。第一个参数是请求的 URL 路径(这里是根路径 '/'
),第二个参数是一个回调函数,该函数在路由匹配到请求时调用。回调函数接收两个参数:req
(请求对象)和 res
(响应对象)。在这个例子中,当用户访问根路径时,我们使用 res.send()
方法发送一个包含 “Hello World!” 文本的响应。
app.listen(port, () => { console.log(Example app listening at http://localhost:${port}); });
这一行代码启动了服务器并使其开始监听指定的端口号(在这里是 3000)。app.listen()
方法接受两个参数:第一个参数是要监听的端口号;第二个参数是一个回调函数,当服务器启动并开始监听端口时调用。
在这个例子中,当服务器启动后,我们在控制台输出一条消息,提示应用已经在 http://localhost:3000
上运行。
这个简单的 Express 应用只有一个路由,用于处理根路径的 GET 请求。当用户访问 http://localhost:3000
时,服务器将返回 “Hello World!” 文本。通过添加更多的路由和中间件,你可以构建更复杂的 Web 应用和 API。
demo | 体验中间件
下面是一个 Express 基本使用的示例,这个示例将演示如何创建一个简单的 Web 服务,处理不同的 HTTP 请求,使用路由和中间件。
const express = require('express');
const app = express();
const port = 3000;
// 中间件:记录请求日志
app.use((req, res, next) => {
console.log(`[${new Date().toLocaleString()}] ${req.method} ${req.url}`);
next();
});
// 路由:处理根路径的 GET 请求
app.get('/', (req, res) => {
res.send('Welcome to the homepage!');
});
// 路由:处理 /about 路径的 GET 请求
app.get('/about', (req, res) => {
res.send('Welcome to the about page!');
});
// 路由:处理 /users/:userId 路径的 GET 请求,:userId 为动态参数
app.get('/users/:userId', (req, res) => {
res.send(`User ID: ${req.params.userId}`);
});
// 404 错误处理
app.use((req, res) => {
res.status(404).send('404 Not Found');
});
// 启动服务器
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
现在 Express 应用已经启动并监听 3000 端口。我们可以通过访问以下 URL 来测试不同的路由:
- http://localhost:3000 - 根路径,显示 “Welcome to the homepage!”
- http://localhost:3000/about - /about 路径,显示 “Welcome to the about page!”
- http://localhost:3000/users/123 - /users/123 路径,显示 “User ID: 123”
- http://localhost:3000/unknown - 未定义的路径,返回 404 错误 “404 Not Found”
此外,控制台还会输出请求日志,例如:
[2023/5/8 21:56:04] GET /
[2023/5/8 21:56:07] GET /about
[2023/5/8 21:56:08] GET /users/123
[2023/5/8 21:56:08] GET /unknown
这个示例展示了如何使用 Express 的基本功能,包括中间件、路由和错误处理。我们可以根据自己的需求扩展这个示例,添加更多的路由、中间件和其他功能。