3、后端项目创建与初始化:使用 Express 或 FastAPI 搭建后端项目
说实话,我开始做联调的时候,最头疼的不是前端也不是后端,而是两边连不起来。 后来我悟了——关键在项目初始化的姿势。今天咱们就把 Express 和 FastAPI 这两种主力后端,从零搭起来,走一遍完整流程。
选型思考:Express vs FastAPI
我个人习惯:如果是快速原型、前端团队已经熟悉 JS 的,直接上 Express;如果涉及数据处理、AI 推理、或者需要强类型校验的,我必选 FastAPI。 说白了,没有银弹,看场景。
| 维度 | Express (Node.js) | FastAPI (Python) |
|---|---|---|
| 语言生态 | 前后端统一 JS/TS | 数据科学、AI 生态丰富 |
| 启动速度 | 秒级,轻量 | 秒级(含 import 时间) |
| 类型支持 | 需额外 TypeScript | 原生 Pydantic 类型校验 |
| 异步支持 | 回调/Promise/async | 原生 async/await |
| 社区成熟度 | 极成熟,中间件丰富 | 快速增长,API 文档自动生成 |
使用 Express 搭建 Node.js 后端
先创建项目目录,然后进入目录初始化。我一般会先 npm init -y,再手动加必要字段。
mkdir express-backend
cd express-backend
npm init -y
npm install express
安装完以后,新建 app.js。这是我多年摸出来的最小可用结构:
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
app.use(express.json());
app.get('/api/health', (req, res) => {
res.json({ status: 'ok', timestamp: new Date().toISOString() });
});
app.listen(PORT, () => {
console.log(`Server running on http://localhost:${PORT}`);
});
启动前记得检查端口是否被占用。我曾经在一次 Demo 前忘了关旧进程,结果怎么都连不上,排查了半天——嗯,这个坑我替你们踩了。
express.json() 中间件。另外 npm start 要配好 scripts。
启动:node app.js。如果要热重载,我习惯加 npm install --save-dev nodemon,然后改 package.json 的 dev 脚本。
使用 FastAPI 搭建 Python 后端
先创建虚拟环境——这一步不能省。我曾经在多个项目共用一个 Python 环境,依赖冲突到崩溃,后来每个项目都独立 venv。
mkdir fastapi-backend
cd fastapi-backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install fastapi uvicorn
然后写 main.py,我习惯这样开篇:
from fastapi import FastAPI
import uvicorn
app = FastAPI(title="联调实战API")
@app.get("/api/health")
def health():
return {"status": "ok", "timestamp": "2025-04-01T12:00:00Z"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000, reload=True)
reload=True 可以实现热重载,开发时改代码自动重启。但上生产必须去掉这个参数,否则性能会受影响。
启动命令:python main.py。你也可以用 uvicorn main:app --reload,两种方式我都试过,个人更倾向在脚本里直接 run,方便加启动配置。
项目目录结构推荐
项目一大了,目录乱掉就特容易出联调问题。我建议起步时就规范好:
| Express 项目 | FastAPI 项目 |
|---|---|
| express-backend/ ├── app.js ├── package.json ├── node_modules/ └── .env (可选) | fastapi-backend/ ├── main.py ├── requirements.txt ├── venv/ └── .env (可选) |
我的原则:入口文件始终放在根目录,路由和模型随着业务增长再拆模块。一开始别过度设计,但 .env 文件要配好——联调时接口地址、端口这些全靠它。
环境变量与配置管理
前后端联调最烦的就是写死地址。我用 dotenv 解决(Express 和 FastAPI 都有对应库)。
- Express:
npm install dotenv,然后在 app.js 最顶部写require('dotenv').config(); - FastAPI:
pip install python-dotenv,用from dotenv import load_dotenv; load_dotenv()
然后在项目根目录创建 .env 文件,内容类似:
PORT=3000
DATABASE_URL=sqlite:///dev.db
ALLOWED_ORIGINS=http://localhost:5173
.gitignore 里加上 .env。
后端启动后,用浏览器访问 http://localhost:3000/api/health(Express)或 http://localhost:8000/api/health(FastAPI),看到 JSON 返回就说明初始化成功了。
嗯,到这步,后端已经能跑了,下一步就是连上前端搞联调。