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 上也有许多开源项目可以作为参考。
943

被折叠的 条评论
为什么被折叠?



