ZYH 开发教程
学习中心/网站后端
网站后端

Node.js 与 Express 后端学习指南

从 JavaScript 前置到 Express、数据库、REST、认证、日志和测试。

1. JavaScript 前置#

变量、基本类型、数组、对象、函数、作用域、模块。 Promise、async/await、try/catch。 事件循环的基本模型:I/O 等待时不会简单地阻塞整个服务,但 CPU 密集工作仍可能阻塞事件循环。

若这些内容很陌生,先用 1 周补基础;不要一边猜语法一边学框架。

2. Node.js#

package.json、依赖与开发依赖、npm scripts。 环境变量、文件路径、ES 模块、内置 HTTP 模块。 异步错误处理;程序启动和优雅关闭的基本概念。 Node.js 版本使用 LTS,提交锁文件,了解依赖安全更新。

3. Express#

路由:方法 + 路径 + 处理函数。 中间件执行顺序、JSON 解析、认证、错误处理中间件。 请求参数来源:路径参数、查询参数、请求体、请求头。 统一响应和错误格式;404 与 500 分开处理。

建议结构(先保持简单):

text
src/
  app.js              # Express 配置
  server.js           # 启动与关闭
  routes/             # 路由映射
  controllers/        # HTTP 输入输出
  services/           # 业务规则
  repositories/       # 数据库访问
  middleware/         # 认证、错误、日志
  db/                  # 连接、迁移
tests/

不要为了“架构高级”制造十层目录。目标是路由、业务、数据访问各自职责清楚且容易测试。

4. REST API 设计#

text
POST   /api/v1/tasks       创建任务
GET    /api/v1/tasks       列表、过滤、分页
GET    /api/v1/tasks/:id   获取一个任务
PATCH  /api/v1/tasks/:id   修改任务
DELETE /api/v1/tasks/:id   删除任务

使用名词和一致的复数形式;正确使用状态码;分页设置上限;错误信息可理解但不泄露内部堆栈或 SQL。 版本路径、幂等性、API 文档(OpenAPI)。

5. 数据库接入#

使用连接池和参数化查询。 事务必须使用同一数据库连接,并保证出错回滚、最后释放连接。 迁移文件进入版本管理;生产环境不依赖应用启动时自动随意修改表。 ORM 能提高效率,但不能替代 SQL、约束、事务和索引知识。初学项目建议先使用数据库驱动写一部分原生 SQL,再选择 ORM。

6. 输入、认证和授权#

所有外部输入都不可信:验证类型、长度、格式、范围和允许字段。 密码使用专门的慢哈希算法;永不记录密码、Token、数据库密码。 每个读取/修改接口都检查资源所有权或角色权限,不能只在前端隐藏按钮。 登录接口需考虑频率限制;Cookie 方案需理解 HttpOnly、Secure、SameSite 和 CSRF。 Token 不是“加密一切”;应设置有效期、验证签名和声明,并规划撤销/刷新策略。

7. 错误、日志和测试#

异常集中处理;业务错误与未知错误分开。 日志包含时间、级别、请求 ID、路径、状态码、耗时;敏感字段脱敏。 测试正常路径和失败路径:无效输入、未登录、越权、不存在、数据库冲突。 单元测试业务逻辑,集成测试 API + 测试数据库。

阶段验收#

  • 能从空目录建立 Express 项目并运行健康检查接口。
  • 能解释一个请求经过哪些中间件。
  • CRUD 使用参数化查询,列表有分页上限。
  • 登录密码不明文存储,接口区分认证与授权。
  • 统一处理 400/401/403/404/409/500。
  • 至少写 15 个自动化测试,包含失败和越权场景。
  • README 写清启动、迁移、测试方法及环境变量名称。
可搜索标题、说明和正文Esc 关闭
从一个简单词开始试试“HTML”“数据库”“登录”或“部署”
在线练习修改代码并查看结果
运行结果