Express.js 是一个基于 Node.js 的开源 Web 应用框架,它极简且灵活,非常适合用于搭建各种类型的 Web 应用。本文将带你从 Express.js 的基础入门,到实际应用中搭建高效 Web 应用。
一、Express.js 简介
Express.js 由 TJ Holowaychuk 开发,是一个轻量级的 Web 框架,旨在帮助开发者快速、高效地搭建 Web 应用。它简化了 Node.js 中的 HTTP 服务器创建过程,并提供了丰富的中间件支持。
二、安装 Node.js 和 Express.js
在开始使用 Express.js 之前,你需要安装 Node.js 和 Express.js。以下是在 Windows 和 macOS/Linux 上安装的步骤:
Windows
- 下载 Node.js 安装程序。
- 运行安装程序,并选择“Add Node.js to PATH”选项。
- 打开命令行窗口,输入
npm -v和node -v检查安装是否成功。
macOS/Linux
- 打开终端。
- 使用以下命令安装 Node.js 和 npm:
sudo apt-get update
sudo apt-get install nodejs npm
打开命令行窗口,输入
node -v和npm -v检查安装是否成功。使用以下命令全局安装 Express.js:
sudo npm install -g express
三、创建第一个 Express.js 应用
以下是一个简单的 Express.js 应用示例:
// 引入 express 模块
const express = require('express');
// 创建一个 express 应用
const app = express();
// 定义一个路由,当访问根目录时返回 "Hello World!"
app.get('/', (req, res) => {
res.send('Hello World!');
});
// 监听 3000 端口
app.listen(3000, () => {
console.log('应用正在运行在 http://localhost:3000');
});
将以上代码保存为 app.js,然后在命令行窗口中运行 node app.js。现在,当你访问 http://localhost:3000 时,你应该能看到 “Hello World!” 的信息。
四、路由和中间件
Express.js 使用路由和中间件来处理请求。以下是关于路由和中间件的详细介绍:
路由
路由定义了应用中特定 URL 的处理逻辑。以下是一个简单的路由示例:
app.get('/about', (req, res) => {
res.send('关于我们');
});
在这个例子中,当访问 /about 路径时,应用会返回 “关于我们” 的信息。
中间件
中间件是一个函数,它可以访问请求对象(req)、响应对象(res)以及请求的上下文(next),并在请求处理过程中进行一些处理。以下是一个简单的中间件示例:
// 定义一个中间件
function logger(req, res, next) {
console.log(`${req.method} ${req.url}`);
next();
}
// 在应用中使用中间件
app.use(logger);
在这个例子中,中间件会在每个请求之前打印请求方法和 URL,然后继续执行下一个中间件或路由。
五、模板引擎
Express.js 可以与各种模板引擎一起使用,例如 EJS、Pug、Handlebars 等。以下是一个使用 EJS 的示例:
- 安装 EJS:
npm install ejs
- 在
app.js中配置 EJS:
app.set('view engine', 'ejs');
- 创建一个名为
index.ejs的文件,并放置在views目录下:
<!DOCTYPE html>
<html>
<head>
<title>Express.js 应用</title>
</head>
<body>
<h1>Hello, <%= title %></h1>
</body>
</html>
- 修改
app.get('/index', (req, res) => {...})路由,使其渲染index.ejs模板:
app.get('/index', (req, res) => {
res.render('index', { title: 'Express.js 应用' });
});
现在,当你访问 /index 路径时,应用会渲染 index.ejs 模板,并显示 “Hello, Express.js 应用”。
六、数据库集成
Express.js 可以与各种数据库集成,例如 MongoDB、MySQL、PostgreSQL 等。以下是一个使用 MongoDB 的示例:
- 安装 MongoDB 和 Mongoose:
npm install mongoose
- 在
app.js中连接 MongoDB:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/myapp', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
- 定义一个 Mongoose 模型:
const Schema = mongoose.Schema;
const UserSchema = new Schema({
name: String,
age: Number,
});
const User = mongoose.model('User', UserSchema);
- 在路由中操作数据库:
app.get('/users', async (req, res) => {
const users = await User.find();
res.send(users);
});
现在,当你访问 /users 路径时,应用会从 MongoDB 中获取用户数据并返回。
七、性能优化
为了提高 Express.js 应用的性能,你可以采取以下措施:
- 使用缓存,例如 Redis 或 Memcached。
- 优化数据库查询,例如使用索引和避免 N+1 查询。
- 使用异步中间件,避免阻塞事件循环。
- 使用性能分析工具,例如 New Relic 或 PM2。
八、总结
通过本文的学习,你应该已经掌握了 Express.js 的基础知识,并能够搭建一个简单的 Web 应用。在后续的学习中,你可以深入了解 Express.js 的更多高级特性和最佳实践,以构建更高效、更健壮的 Web 应用。
