Express.js 教程

From binaryoption
Jump to navigation Jump to search
Баннер1
  1. Express.js 教程

简介

Express.js 是一个基于 Node.js 的快速、简洁且灵活的 Web 应用程序框架。它提供了一组强大的特性,可以帮助开发者轻松构建各种网络和移动应用程序。本教程旨在为初学者提供一个全面的 Express.js 入门指南,涵盖基础概念、安装、路由、中间件、模板引擎以及一些高级主题。 本教程假设您已经对 JavaScript 和 Node.js 有基本的了解。如果还没有,建议先学习 Node.js 教程

前提条件

在开始之前,请确保您已安装以下软件:

  • Node.js:Express.js 依赖于 Node.js 运行时环境。请从官方网站下载并安装最新版本:[[1]]
  • npmYarn:Node Package Manager (npm) 是 Node.js 的默认包管理器。Yarn 是一个替代方案,也常用于管理项目依赖项。通常,安装 Node.js 时会同时安装 npm。

安装 Express.js

安装 Express.js 非常简单。您可以使用 npm 或 Yarn 通过命令行完成安装。

  • 使用 npm:
   ```bash
   npm install express
   ```
  • 使用 Yarn:
   ```bash
   yarn add express
   ```

安装完成后,您就可以在您的 Node.js 项目中使用 Express.js 了。

创建您的第一个 Express.js 应用程序

让我们创建一个简单的 Express.js 应用程序来演示其基本用法。

1. 创建一个名为 `app.js` 的文件。

2. 在 `app.js` 文件中,添加以下代码:

   ```javascript
   const express = require('express');
   const app = express();
   const port = 3000;
   app.get('/', (req, res) => {
     res.send('Hello World!');
   });
   app.listen(port, () => {
     console.log(`应用程序正在监听端口 ${port}`);
   });
   ```

3. 保存 `app.js` 文件。

4. 在命令行中,导航到包含 `app.js` 文件的目录,并运行以下命令:

   ```bash
   node app.js
   ```

5. 打开您的 Web 浏览器,并访问 `http://localhost:3000`。您应该看到页面上显示 “Hello World!”。

解释代码

  • `const express = require('express');`:这行代码导入 Express.js 模块。
  • `const app = express();`:这行代码创建一个 Express.js 应用程序实例。
  • `const port = 3000;`:这行代码定义应用程序监听的端口号。
  • `app.get('/', (req, res) => { ... });`:这行代码定义一个路由,用于处理对根路径 (`/`) 的 GET 请求。当用户访问根路径时,回调函数将被执行。
   *   `req`:请求对象,包含有关客户端请求的信息。
   *   `res`:响应对象,用于向客户端发送响应。
   *   `res.send('Hello World!');`:这行代码向客户端发送一个包含文本 “Hello World!” 的响应。
  • `app.listen(port, () => { ... });`:这行代码启动服务器,并使其监听指定的端口。当服务器启动成功时,回调函数将被执行。

路由

路由是 Express.js 应用程序的核心。它们定义了应用程序如何响应不同的 HTTP 请求。Express.js 提供了多种路由方法,包括:

  • `app.get(path, callback)`:处理 GET 请求。
  • `app.post(path, callback)`:处理 POST 请求。
  • `app.put(path, callback)`:处理 PUT 请求。
  • `app.delete(path, callback)`:处理 DELETE 请求。
  • `app.patch(path, callback)`:处理 PATCH 请求。
  • `app.all(path, callback)`:处理所有 HTTP 请求。

`path` 可以是一个字符串、正则表达式或数组。`callback` 是一个函数,它接受 `req` 和 `res` 对象作为参数。

路由参数

您可以使用路由参数从 URL 中提取值。例如:

```javascript app.get('/users/:userId', (req, res) => {

 const userId = req.params.userId;
 res.send(`用户 ID: ${userId}`);

}); ```

在这个例子中,`/:userId` 定义了一个路由参数 `userId`。当用户访问类似 `http://localhost:3000/users/123` 的 URL 时,`req.params.userId` 的值将为 “123”。

中间件

中间件是在请求和响应之间执行的函数。它们可以用于执行各种任务,例如:

  • 身份验证
  • 授权
  • 日志记录
  • 请求解析
  • 错误处理

Express.js 提供了许多内置的中间件,例如:

  • `express.static(root)`:用于提供静态文件,例如 HTML、CSS 和 JavaScript 文件。
  • `express.json()`:用于解析 JSON 格式的请求体。
  • `express.urlencoded({ extended: true })`:用于解析 URL 编码的请求体。

您还可以创建自己的自定义中间件。

```javascript function logger(req, res, next) {

 console.log(`请求 URL: ${req.url}`);
 next();

}

app.use(logger); ```

在这个例子中,`logger` 是一个自定义中间件,它记录请求 URL,然后调用 `next()` 函数将请求传递给下一个中间件。

模板引擎

模板引擎允许您使用动态数据生成 HTML 页面。Express.js 支持多种模板引擎,例如:

要使用模板引擎,您需要:

1. 安装模板引擎。 2. 配置 Express.js 以使用模板引擎。 3. 创建模板文件。

例如,要使用 EJS 模板引擎:

1. 安装 EJS:

   ```bash
   npm install ejs
   ```

2. 配置 Express.js:

   ```javascript
   app.set('view engine', 'ejs');
   ```

3. 创建模板文件 `views/index.ejs`:

   ```html
   <!DOCTYPE html>
   <html>
   <head>
     <title>EJS 示例</title>
   </head>
   <body>

Hello, <%= name %>!

   </body>
   </html>
   ```

4. 在您的路由中,使用 `res.render()` 函数渲染模板:

   ```javascript
   app.get('/', (req, res) => {
     res.render('index', { name: 'World' });
   });
   ```

当用户访问根路径时,EJS 模板引擎将渲染 `views/index.ejs` 文件,并将 `name` 变量的值设置为 “World”。

错误处理

错误处理是构建健壮的 Web 应用程序的重要组成部分。Express.js 提供了几种处理错误的方法:

  • **错误中间件**:您可以定义一个特殊的中间件函数,用于处理错误。错误中间件函数接受四个参数:`err`、`req`、`res` 和 `next`。
  • **`next(err)`**:您可以使用 `next(err)` 函数将错误传递给下一个错误处理中间件。

```javascript app.use((err, req, res, next) => {

 console.error(err.stack);
 res.status(500).send('Something broke!');

}); ```

高级主题

总结

Express.js 是一个功能强大且灵活的 Web 应用程序框架,可以帮助您快速构建各种网络和移动应用程序。本教程涵盖了 Express.js 的基本概念、安装、路由、中间件、模板引擎以及一些高级主题。希望本教程能帮助您入门 Express.js。

相关链接

立即开始交易

注册IQ Option(最低存款$10) 开立Pocket Option账户(最低存款$5)

加入我们的社区

订阅我们的Telegram频道 @strategybin 获取: ✓ 每日交易信号 ✓ 独家策略分析 ✓ 市场趋势提醒 ✓ 新手教育资料

Баннер