Express 简介与快速开始
🎯 引言
上一个课程我们用 Node.js 原生 http 模块搭过服务器,能跑,但写法比较繁琐。学完这篇文章,你能说清楚 Express 是什么、它帮我们解决了什么问题,还能从零初始化一个项目,跑通第一个 Express 服务器。
🧱 什么是 Express
Express 是一个基于 Node.js http 模块封装的 Web 开发框架,也是 Node.js 生态里热门的后端框架。它没有引入新的底层能力,而是把搭建服务器时的高频工作都封装成了简单的 API:
- 路由:不用自己写一堆
if/else判断req.url。 - 请求处理:解析 JSON 请求体、查询参数都有现成方案。
- 响应:一行代码返回 JSON,不用手动设置
Content-Type。 - 中间件:日志、鉴权、静态文件等通用功能可以像积木一样插拔。
你可以把它理解为:http 模块是发动机零件,Express 是一辆组装好的车,我们只需要学开车,不用先学造零件。
✨ 为什么需要 Express
回忆一下上一个课程用原生 http 模块写路由的样子:
import http from 'node:http';
const server = http.createServer((req, res) => {
if (req.url === '/' && req.method === 'GET') {
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
res.end('欢迎来到首页');
} else {
res.statusCode = 404;
res.end('页面不存在');
}
});
server.listen(3000);
同样的功能,用 Express 来写:
import express from 'express';
const app = express();
app.get('/', (req, res) => {
res.send('欢迎来到首页');
});
app.listen(3000);
路由判断、响应头设置都被框架接管了,代码量少了一半,可读性也更好。接口一多,差距会越来越大,这就是框架存在的意义。
🛠 初始化项目
新建一个项目目录,在终端进入后执行:
npm init -y
npm install express
第一条命令生成 package.json,第二条命令安装 Express。接着在 package.json 中加一行 "type": "module",开启 ES Module 写法,和上一个 Node.js 课程保持一致:
{
"name": "express-demo",
"type": "module"
}
"type": "module" 的话,import 语法会直接报错。网上的老教程常用 require 写法,我们统一用 ESM,写法上和前端 Vite 项目完全一致。🛠 跑通第一个服务器
新建 app.js,写入下面的代码:
import express from 'express';
// 创建应用实例
const app = express();
// 定义路由:GET 请求访问 / 时执行
app.get('/', (req, res) => {
res.send('Hello Express');
});
// 监听 3000 端口
app.listen(3000, () => {
console.log('服务器已启动:http://localhost:3000');
});
在终端运行 node app.js,浏览器打开 http://localhost:3000,就能看到 Hello Express 了。整个过程只有三个关键动作:创建应用、定义路由、监听端口。
🛠 用 watch 模式开发
每次改完代码都要按 Ctrl+C 再重新 node app.js,效率很低。Node.js 内置了监听模式,保存文件后自动重启:
node --watch app.js
开发阶段建议一直用这条命令启动,改完代码刷新浏览器就能看到效果,无需手动重启。
🧾 小节总结
- Express 是基于 http 模块封装的 Web 框架,把路由、请求响应处理等工作变成了简单的 API。
- 用
npm init -y初始化项目,npm install express安装框架,本课程基于 Node.js v22 和 Express 5.2.1。 package.json中加"type": "module"后,项目统一使用 ESM 的import语法。- 一个 Express 服务器只需三步:创建
app、定义路由、listen监听端口。 - 开发时用
node --watch app.js,文件保存后自动重启服务。
❓ 知识问答
Q1:Express 和 Node.js 是什么关系?
Node.js 是运行环境,Express 是运行在这个环境上的一个框架包。Express 底层用的还是 Node.js 的 http 模块,只是做了封装。
Q2:学了 Express,上一个课程的 http 模块白学了吗?
没有。Express 的路由、响应本质上都是 http 模块能力的封装,懂了底层原理,遇到问题时才知道去哪排查。而且不是所有项目都用框架。
Q3:Express 4 和 Express 5 差别大吗?
核心用法(路由、中间件、请求响应)基本一样,主要差异在通配符路由写法、异步错误处理等少数地方。跟着本课程学 Express 5 的写法即可,遇到老教程时注意甄别版本。
Q4:端口 3000 被占用怎么办?
把 listen(3000) 换成其他没被占用的端口,比如 3001,或者先找到并关闭占用 3000 端口的程序。
🧪 小练习
在自己的项目里加一个 /about 路由,访问时返回“关于我们”四个字。
import express from 'express';
const app = express();
app.get('/', (req, res) => {
res.send('Hello Express');
});
// 请在这里编写代码
app.listen(3000);
🎉 恭喜你已经跑通了第一个 Express 服务器!下一篇我们系统学习路由,掌握 GET、POST 等请求方法和路径参数的用法。
