Express.js 是一个流行的 Node.js 框架,用于快速构建单页、多页或混合 Web 应用。本文将带你从入门到高效构建 Web 应用,涵盖了 Express 的基础知识、常用中间件、路由处理、模板引擎以及性能优化等。
第一章:Express 简介
1.1 什么是 Express?
Express 是一个基于 Node.js 的 Web 应用框架,它提供了一系列丰富的 API,帮助开发者快速搭建 Web 应用。Express 本身只提供了路由和中间件的概念,其他功能如模板渲染、数据库连接等都需要通过中间件来实现。
1.2 Express 的特点
- 轻量级:Express 本身只提供了核心功能,其他功能通过中间件实现,从而保证了应用的轻量级。
- 模块化:Express 支持模块化开发,便于代码的维护和扩展。
- 灵活性:Express 提供了丰富的中间件,满足不同场景下的需求。
- 社区支持:Express 拥有庞大的社区,提供了丰富的资源和学习资料。
第二章:Express 入门
2.1 安装 Node.js 和 Express
首先,你需要安装 Node.js,可以从 Node.js 官网 下载并安装。然后,使用以下命令安装 Express:
npm install express
2.2 创建第一个 Express 应用
创建一个名为 app.js 的文件,并添加以下代码:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(port, () => {
console.log(`Server running on http://localhost:${port}`);
});
运行 node app.js,然后访问 http://localhost:3000,你将看到 “Hello, World!” 的提示。
第三章:路由和中间件
3.1 路由
路由是 Express 的核心功能之一,用于定义 URL 与处理函数的映射关系。以下是一个简单的路由示例:
app.get('/user/:id', (req, res) => {
const userId = req.params.id;
res.send(`User ID: ${userId}`);
});
在这个例子中,当访问 /user/:id 路径时,会调用对应的处理函数,并将 URL 中的 id 参数传递给处理函数。
3.2 中间件
中间件是 Express 的另一个核心概念,用于处理请求和响应。以下是一个简单的中间件示例:
app.use((req, res, next) => {
console.log('Request URL:', req.originalUrl);
next();
});
在这个例子中,中间件会打印出请求的 URL,然后调用 next() 函数将控制权传递给下一个中间件或路由处理函数。
第四章:模板引擎
在 Express 中,我们可以使用模板引擎来渲染 HTML 页面。以下是一个使用 EJS 模板引擎的示例:
app.set('view engine', 'ejs');
app.get('/profile', (req, res) => {
const user = { name: '张三', age: 20 };
res.render('profile', { user });
});
在这个例子中,我们设置了 EJS 作为模板引擎,并创建了一个 /profile 路由,用于渲染 profile.ejs 模板。
第五章:性能优化
5.1 缓存
缓存是提高 Web 应用性能的有效手段。在 Express 中,我们可以使用中间件来实现缓存,例如使用 memory-cache 中间件:
const cache = require('memory-cache');
app.get('/data', (req, res) => {
const data = cache.get('data');
if (data) {
return res.send(data);
}
// 模拟从数据库获取数据
const result = ...;
cache.put('data', result);
res.send(result);
});
5.2 压缩
压缩可以减少数据传输的大小,提高页面加载速度。在 Express 中,我们可以使用 compression 中间件来实现压缩:
const compression = require('compression');
app.use(compression());
5.3 并发处理
在 Node.js 中,并发处理是提高性能的关键。我们可以使用 cluster 模块来实现多进程并发:
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
} else {
const express = require('express');
const app = express();
// ... 其他代码
app.listen(3000);
}
第六章:总结
通过本文的学习,你应该已经掌握了 Express 框架的基本知识,能够构建简单的 Web 应用。在实际开发过程中,你可以根据项目需求选择合适的中间件和优化手段,提高应用的性能和可维护性。
