Express.js 是什么?Express.js 简介

Express.js 是一个基于 Node.js 的快速、开放源代码的 Web 应用程序框架,用于构建 Web 应用和 API。它提供了一组强大的特性来帮助开发者创建各种类型的 HTTP 服务器和服务端应用,简化了路由定义、中间件使用、模板渲染等常见任务。

1. 简介与安装

Express.js 是一个为 Node.js 设计的极简且灵活的 Web 应用程序框架,它提供了强大的特性来开发 Web 和移动应用程序。你可以通过 npm(Node Package Manager)轻松安装 Express.js。

npm install express --save

--save 参数会将 express 添加到项目的 dependencies 中,确保在其他环境中安装时也会包含这个依赖。

2. 创建 Express 应用

创建一个新的 JavaScript 文件(如 app.js),然后引入 Express 并初始化应用实例:

const express = require('express');
const app = express();

3. 路由定义

路由是决定如何响应客户端请求的核心机制。你可以根据 HTTP 方法和 URL 来定义不同的路由处理函数。

基本路由
// GET 请求
app.get('/', (req, res) => {
  res.send('GET request to the homepage');
});

// POST 请求
app.post('/submit', (req, res) => {
  res.send('POST request to the submit page');
});
动态路由参数

你还可以使用冒号 (:) 来定义动态路径参数,这些参数可以在请求处理函数中获取。

app.get('/user/:id', (req, res) => {
  res.send(`Requested user ID: ${req.params.id}`);
});

4. 中间件

中间件是一些函数,它们可以访问请求对象 (req)、响应对象 (res) 和应用的请求-响应周期中的下一个中间件函数。中间件可以执行如下任务:

  • 执行任意代码。
  • 修改请求和响应对象。
  • 结束请求-响应周期。
  • 调用堆栈中的下一个中间件。
内置中间件

Express 提供了一些内置的中间件,例如用于解析 JSON 和 URL 编码表单数据的 express.json()express.urlencoded()

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
自定义中间件

你可以编写自己的中间件来处理特定的任务,比如日志记录或身份验证。

function logger(req, res, next) {
  console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
  next(); // 必须调用 next() 以传递控制权给下一个中间件或路由处理函数
}

app.use(logger); // 应用全局中间件
第三方中间件

有许多第三方中间件可以通过 npm 安装,如 cors(跨域资源共享)、helmet(安全头设置)等。

npm install cors helmet

然后在你的应用中使用它们:

const cors = require('cors');
const helmet = require('helmet');

app.use(cors());
app.use(helmet());

5. 模板引擎

为了生成 HTML 页面,Express 支持多种模板引擎,如 Pug、EJS、Handlebars 等。你需要安装相应的模板引擎,并告诉 Express 使用哪一个。

npm install ejs

接着在应用中配置视图引擎:

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

之后你可以渲染带有动态内容的视图文件:

app.get('/users', (req, res) => {
  const users = ['Alice', 'Bob', 'Charlie'];
  res.render('users', { users }); // 渲染名为 'users.ejs' 的模板,并传入用户列表作为上下文
});

6. 静态文件服务

为了让浏览器能够加载样式表、脚本和其他静态资源,你需要设置静态文件夹。

app.use(express.static('public'));

这行代码意味着所有位于 public 文件夹下的文件都可以通过 URL 直接访问。

7. 错误处理

Express 允许你定义错误处理中间件,通常这些中间件有四个参数 (err, req, res, next)。如果之前的任何中间件或路由处理器抛出了错误,那么错误处理中间件就会被调用。

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

8. 启动服务器

最后一步是让 Express 应用监听某个端口上的连接。

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

9. 生产环境优化

在生产环境中部署 Express 应用时,你应该考虑以下几点:

  • 性能优化:利用缓存、压缩、负载均衡等技术提高应用性能。
  • 安全性:实施 HTTPS、防止常见的攻击向量(如 XSS、CSRF)等。
  • 监控与日志:设置适当的监控和日志系统,以便快速诊断问题。
  • 错误恢复:实现健壮的错误处理逻辑,确保应用即使遇到故障也能保持稳定运行。

10. 社区与支持

Express.js 拥有一个庞大而活跃的社区,官方文档详尽,还有大量的教程、书籍和在线课程可以帮助你学习和解决问题。此外,GitHub 上也有许多开源项目可以作为参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涔溪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值