这是一个基于 Express.js 的 Node.js 后端项目模板,采用分层架构设计,内置了完整的 CRUD 示例功能、用户认证系统和 JWT 令牌管理。
- Node.js - JavaScript 运行时环境
- Express.js - Web 框架
- Sequelize - ORM 数据库操作工具
- PostgreSQL - 关系型数据库
- Pino - 高性能日志记录工具
- CORS - 跨域资源共享支持
- Express Rate Limit - API 速率限制
- jose - JWT 令牌生成和验证
- bcrypt - 密码加密
template/
├── src/
│ ├── controllers/ # 控制器层 - 处理请求和响应
│ │ ├── todo.controller.js
│ │ ├── user.controller.js
│ │ └── logs/
│ ├── models/ # 数据模型层 - 定义数据库表结构
│ │ ├── todo.model.js
│ │ └── user.model.js
│ ├── routes/ # 路由层 - 定义 API 端点
│ │ ├── todo.route.js
│ │ └── user.route.js
│ ├── services/ # 服务层 - 业务逻辑处理
│ │ ├── todo.service.js
│ │ └── user.service.js
│ ├── utils/ # 工具函数
│ │ ├── AppError.js
│ │ ├── db.helper.js
│ │ ├── globalErrorHandler.js
│ │ ├── JWT.helper.js
│ │ ├── logger.helper.js
│ │ ├── RateLimiter.js
│ │ └── response.helper.js
│ ├── scripts/ # 脚本文件
│ │ ├── seed.js
│ │ └── data/
│ │ └── initData.json
│ ├── app.js # Express 应用配置
│ └── server.js # 服务器入口文件
├── logs/ # 日志文件目录
├── .env # 环境变量配置
├── .gitignore
├── package.json
└── README.md
- 克隆或下载项目
- 安装依赖(使用 pnpm):
pnpm install
复制 .env 文件并配置以下变量:
PORT=3000
DB_HOST=your_database_host
DB_PORT=6543
DB_USER=your_database_user
DB_PASSWORD=your_database_password
DB_NAME=your_database_name开发模式运行(支持热重载):
pnpm dev服务器将在 http://localhost:3000 启动
基础路径:/v1
GET /v1/todos
查询参数:
page(可选): 页码,默认 1limit(可选): 每页数量,默认 5search(可选): 搜索关键词
GET /v1/todos/:todoId
POST /v1/todos
Content-Type: application/json
{
"title": "示例标题",
"description": "示例描述"
}
PATCH /v1/todos
Content-Type: application/json
{
"id": 1,
"title": "更新后的标题",
"description": "更新后的描述"
}
DELETE /v1/todos/:todoId
GET /v1/todos/count
查询参数:
search(可选): 搜索关键词
POST /v1/users/register
Content-Type: application/json
{
"username": "testuser",
"password": "password123",
"email": "test@example.com"
}
POST /v1/users/login
Content-Type: application/json
{
"username": "testuser",
"password": "password123"
}
成功响应:
{
"success": true,
"message": "登录成功",
"data": {
"user": {
"id": 1,
"username": "testuser",
"email": "test@example.com"
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}GET /v1/users/me
Authorization: Bearer <your_jwt_token>
- ✅ 分层架构(Controller-Service-Model)
- ✅ RESTful API 设计
- ✅ ORM 数据库操作
- ✅ CORS 跨域支持
- ✅ API 速率限制(每秒 10 次请求)
- ✅ 结构化日志记录
- ✅ 分页查询
- ✅ 搜索功能
- ✅ 热重载开发模式
- ✅ 用户注册和登录
- ✅ JWT 令牌认证
- ✅ 密码加密存储
- ✅ 全局错误处理
- ✅ 统一响应格式
日志文件存储在 logs/ 目录下:
all-logs.log- 所有日志error.log- 错误日志
运行种子脚本初始化数据:
node src/scripts/seed.jsISC