Express

Express 简介与快速开始

了解 Express 是什么、为什么需要它,完成项目初始化并跑通第一个 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 模块写路由的样子:

server.js
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 来写:

app.js
import express from 'express';

const app = express();

app.get('/', (req, res) => {
    res.send('欢迎来到首页');
});

app.listen(3000);

路由判断、响应头设置都被框架接管了,代码量少了一半,可读性也更好。接口一多,差距会越来越大,这就是框架存在的意义。


🛠 初始化项目

本文及本课程的示例均基于 Node.js v22 LTSExpress 5.2.1 编写和验证。Express 5 是 2024 年发布的大版本,和网上的 Express 4 老教程在个别写法上有差异,学习时注意区分版本。

新建一个项目目录,在终端进入后执行:

npm init -y
npm install express

第一条命令生成 package.json,第二条命令安装 Express。接着在 package.json 中加一行 "type": "module",开启 ES Module 写法,和上一个 Node.js 课程保持一致:

package.json
{
    "name": "express-demo",
    "type": "module"
}
不加 "type": "module" 的话,import 语法会直接报错。网上的老教程常用 require 写法,我们统一用 ESM,写法上和前端 Vite 项目完全一致。

🛠 跑通第一个服务器

新建 app.js,写入下面的代码:

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 路由,访问时返回“关于我们”四个字。

app.js
import express from 'express';

const app = express();

app.get('/', (req, res) => {
    res.send('Hello Express');
});

// 请在这里编写代码

app.listen(3000);

🎉 恭喜你已经跑通了第一个 Express 服务器!下一篇我们系统学习路由,掌握 GET、POST 等请求方法和路径参数的用法。