1. 引言
Express.js 是一个流行的 Node.js Web 应用框架,它提供了一系列中间件和实用工具来简化 Web 应用的开发。本文将带你从入门到精通,全面了解 Express.js 的核心技术与实战应用。
2. Express.js 简介
Express.js 是由 TJ Holowaychuk 开发的一个简洁、灵活的 Node.js 框架。它旨在提供一系列实用工具,简化 Web 应用的创建过程。Express.js 依赖于 Node.js,因此在使用 Express.js 之前,你需要确保 Node.js 已经安装在你的计算机上。
3. Express.js 入门
3.1 安装 Node.js 和 Express.js
首先,你需要安装 Node.js 和 Express.js。可以通过以下命令进行安装:
npm install -g express-generator
express --help
3.2 创建项目
使用 express-generator 创建一个新项目:
express myapp
cd myapp
这个命令会创建一个名为 myapp 的新项目,并初始化必要的文件和目录。
3.3 运行项目
在项目目录中,使用以下命令启动开发服务器:
node app.js
访问 http://localhost:3000,你应该能看到 Express.js 的欢迎页面。
4. Express.js 核心概念
4.1 路由(Routing)
路由是 Express.js 的核心概念之一。它允许你定义 URL 与 HTTP 请求方法(如 GET、POST 等)之间的映射关系。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
在上面的代码中,当访问根路径 / 时,会返回 “Hello World!“。
4.2 中间件(Middleware)
中间件是 Express.js 中的另一个重要概念。它允许你在请求处理过程中执行一系列操作。
app.use(express.static('public')); // 静态文件服务
app.use(express.json()); // 解析 JSON 格式的请求体
4.3 模板引擎(Template Engine)
Express.js 允许你使用各种模板引擎来渲染动态页面。以下是一个使用 EJS 模板引擎的例子:
app.set('view engine', 'ejs');
app.get('/about', (req, res) => {
res.render('about');
});
在 views 目录下创建一个名为 about.ejs 的文件,内容如下:
<!DOCTYPE html>
<html>
<head>
<title>About Page</title>
</head>
<body>
<h1>About Us</h1>
</body>
</html>
访问 http://localhost:3000/about,你应该能看到 “About Us”。
5. Express.js 实战
5.1 创建 RESTful API
以下是一个简单的 RESTful API 示例:
const express = require('express');
const app = express();
// 获取所有用户
app.get('/users', (req, res) => {
// 查询数据库并返回结果
res.json(users);
});
// 创建新用户
app.post('/users', (req, res) => {
// 将新用户信息保存到数据库
res.status(201).send();
});
// 更新用户信息
app.put('/users/:id', (req, res) => {
// 根据用户 ID 更新数据库中的用户信息
res.send();
});
// 删除用户
app.delete('/users/:id', (req, res) => {
// 根据用户 ID 删除数据库中的用户信息
res.send();
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
5.2 集成数据库
Express.js 可以与各种数据库进行集成,如 MongoDB、MySQL 等。以下是一个使用 MongoDB 的例子:
const express = require('express');
const mongoose = require('mongoose');
const app = express();
const port = 3000;
// 连接 MongoDB
mongoose.connect('mongodb://localhost:27017/myapp', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
// 创建用户模型
const UserSchema = new mongoose.Schema({
name: String,
email: String,
});
const User = mongoose.model('User', UserSchema);
// 获取所有用户
app.get('/users', async (req, res) => {
const users = await User.find();
res.json(users);
});
// 创建新用户
app.post('/users', async (req, res) => {
const user = new User(req.body);
await user.save();
res.status(201).send();
});
// 更新用户信息
app.put('/users/:id', async (req, res) => {
const user = await User.findByIdAndUpdate(req.params.id, req.body, { new: true });
res.send(user);
});
// 删除用户
app.delete('/users/:id', async (req, res) => {
const user = await User.findByIdAndRemove(req.params.id);
res.send(user);
});
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
6. 总结
本文从 Express.js 的入门到实战,全面介绍了 Express.js 的核心技术与实战应用。希望本文能帮助你快速掌握 Express.js,并应用到实际项目中。
