## 📚 技术栈背景 | Tech Stack & Context
- 列出所有的相关技术/语言
- [[Express.js]]
- [[public/CODE/Node.js|Node.js]]
- 主题:一句话总结这张卡片讲解了什么?
-
- 相关文档
-
## 🧩 相关场景 | Context
- 契机:为什么现在写它?
- 所有 [[MERN]] 的项目都要用到 express 和 node 作为 server
- 作用:它解决了什么问题?
- 快速搭建 API 接口
- 应用场景:你未来会在什么地方用到它?
- 任何前后端分离的项目都能用到(前端访问 Express 提供的接口)
## 🔑 基本概念 | Key
[[Express.js#是什么]]
## 🔄 工作流程 | Flow
### 总体流程
### 详细步骤
#### 0. 初始化
- 初始化项目
例如位于项目根目录下,在其下创建一个新的 server folder
```bash
mkdir server && cd server
npm init -y
```
- 安装依赖
```shell
# 在 server 目录下
npm install express cors dotenv
npm install nodemon --save-dev
```
- `express`: 后端框架,用来创建服务器和 API
- `cors`: 允许前端访问后端 API 的工具,常用于前后端分离的项目
- `dotenv`: 用来读取环境变量(比如数据库密码)的工具
- `nodemon`: 开发工具,当你改代码时自动重启服务器
- `--save-dev`: 表示 nodemon 只在开发时使用,不在生产环境使用
- 创建目录
```shell
mkdir -p src/{config,controllers,routes,models,middlewares,utils}
touch .env
```
- `touch`: 创建空文件
- src/{}: 花括号里的内容会被展开,相当于同时执行
#### 1. 配置
- 在 `package.json`
- 添加:
```json
"scripts": {
"dev": "nodemon src/index.js"
}
```
- 意思是:当你运行 `npm run dev` 的时候,等于运行了:`nodemon src/index.js`
- nodemon 是一个 hot reload 的监听工具,改了代码会自动 trigger重启服务
- 修改 `"main": "src/index.ts"` ⚠️:路径符合真实情况
- 新建 `.env` 文件:
```
PORT=5000
MONGO_URI=mongodb+srv://...(if use MongoDB)
```
#### 2. 创建入口文件:`src/index.js`
```js
import express from 'express';
import dotenv from 'dotenv';
import cors from 'cors';
dotenv.config();
const app = express();
const PORT = process.env.PORT || 5000;
app.use(cors());
app.use(express.json());
app.get('/', (req, res) => {
res.send('Hello, Express!');
});
app.listen(PORT, () => {
console.log(`Server is listening on http://localhost:${PORT}`);
});
```
- 导入
- express
- dotenv 读取环境变量
- cors 跨域访问 让前端能跨域访问后端 API
- `dotenv.config()`
- 读取 .env 文件,把里面的值挂到 process.env 上
- `const app = express()`
- 创建一个 Express 应用实例
- 可选: `app.use(cors())`
- 启用跨域请求(前后端分离时必加)
- 可选:`app.use(express.json());`
- 要处理前端 fetch / axios.post() 发来的 JSON 数据(也就是 req.body)。如果你不加这句,req.body 就是 undefined,你就没法处理 POST 的数据。
- `app.get('/', ...)`
- 测试接口,访问 / 路径时返回一段文字
- `app.listen(PORT, ...)`
- 启动服务,监听端口,准备接收请求
#### 3. 运行
- 运行服务器
```bash
npm run dev
```
如果成功,你可以看到 `Server is listening on http://localhost:xxxx`
- 打开浏览器访问 `http://localhost:5000/`
- 如果成功,你可以在界面上看到 `Hello, Express!`
> [!success] Congratulations!
> 你已经成功把 server 跑起来啦!
## 🤔 常见问题 / 提示 | Tips
%%
- 每个功能都按照“route -> controller -> 模型”三段式写法,后期好维护
- `.env` 永远别 push 上 GitHub
- 推荐搭配 Postman 做 API 测试,前端开发更轻松
%%