源码:230509.zip

Express 简介

Express 是一个基于 Node.js 平台的快速、简洁且灵活的 Web 应用程序框架。它提供了一系列功能,使得开发 Web 应用和 API 变得更容易、高效。Express 的主要特点有:

  1. 轻量化:Express 是一个轻量级框架,只提供了最基本的 Web 开发功能,使得应用程序更易于维护且运行速度更快。
  2. 中间件:Express 使用了中间件的概念,可以通过简单的函数对请求和响应对象进行处理和修改。这使得开发者可以轻松地实现各种功能,如日志记录、身份验证、静态文件服务等。
  3. 路由:Express 提供了强大的路由功能,支持动态路由参数、正则表达式匹配等。这使得开发者可以轻松地创建复杂的 URL 结构和处理各种 HTTP 请求。
  4. 模板引擎:Express 支持多种模板引擎,如 Pug、EJS、Handlebars 等,可以轻松地生成动态 HTML 页面。
  5. 易于扩展:Express 的模块化设计使得其易于扩展。开发者可以通过安装第三方模块来实现各种功能,同时也可以创建自定义模块。

Express 安装

要开始使用 Express,首先需要安装 Node.js,然后通过 npm(Node 包管理器)安装 Express:npm install express

demos

demo | Hello World!

接下来,可以创建一个简单的 Express 应用:

  1. const express = require('express');
  2. const app = express();
  3. const port = 3000;
  4. app.get('/', (req, res) => {
  5. res.send('Hello World!');
  6. });
  7. app.listen(port, () => {
  8. console.log(`Example app listening at http://localhost:${port}`);
  9. });

以上代码创建了一个简单的 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 请求,使用路由和中间件。

  1. const express = require('express');
  2. const app = express();
  3. const port = 3000;
  4. // 中间件:记录请求日志
  5. app.use((req, res, next) => {
  6. console.log(`[${new Date().toLocaleString()}] ${req.method} ${req.url}`);
  7. next();
  8. });
  9. // 路由:处理根路径的 GET 请求
  10. app.get('/', (req, res) => {
  11. res.send('Welcome to the homepage!');
  12. });
  13. // 路由:处理 /about 路径的 GET 请求
  14. app.get('/about', (req, res) => {
  15. res.send('Welcome to the about page!');
  16. });
  17. // 路由:处理 /users/:userId 路径的 GET 请求,:userId 为动态参数
  18. app.get('/users/:userId', (req, res) => {
  19. res.send(`User ID: ${req.params.userId}`);
  20. });
  21. // 404 错误处理
  22. app.use((req, res) => {
  23. res.status(404).send('404 Not Found');
  24. });
  25. // 启动服务器
  26. app.listen(port, () => {
  27. console.log(`Server running at http://localhost:${port}`);
  28. });

现在 Express 应用已经启动并监听 3000 端口。我们可以通过访问以下 URL 来测试不同的路由:

此外,控制台还会输出请求日志,例如:

  1. [2023/5/8 21:56:04] GET /
  2. [2023/5/8 21:56:07] GET /about
  3. [2023/5/8 21:56:08] GET /users/123
  4. [2023/5/8 21:56:08] GET /unknown

这个示例展示了如何使用 Express 的基本功能,包括中间件、路由和错误处理。我们可以根据自己的需求扩展这个示例,添加更多的路由、中间件和其他功能。