Appearance
序言
工程化:从"能跑"到"能上线"的关键跨越
你已经能够用 Node.js 写出功能完善的应用。代码逻辑正确,API 接口齐全,本地运行一切正常。但当你准备将应用部署到生产环境时,新的问题接踵而至:
- 如何确保代码质量?谁来保证新功能不会破坏现有功能?
- 如何自动化部署?每次手动 SSH 上服务器实在太低效了
- 如何监控线上状态?出了问题能快速发现和定位吗?
- 如何管理多个环境的配置?开发、测试、生产各不相同
- 如何处理日志?console.log 散落各处,线上排查问题太困难
这些问题的答案,就是工程化。
什么是 Node.js 工程化
工程化不是一项技术,而是一整套方法论和工具链。它包括:
- 代码规范:ESLint、Prettier、TypeScript
- 测试体系:单元测试、集成测试、E2E 测试
- 构建流程:编译、打包、优化
- CI/CD:自动化测试、自动化部署
- 容器化:Docker、Kubernetes
- 监控告警:日志、指标、追踪
工程化的目标,是让软件开发变得可预测、可重复、可维护。
为什么前端开发者更需要这本书
作为前端开发者转型全栈,你可能已经非常熟悉前端工程化:Webpack、Vite、ESLint、Jest——这些工具你每天都在用。
但后端工程化有其独特性:
- 运行环境不同:服务器不是浏览器,你需要考虑进程管理、资源限制
- 部署方式不同:不是打包成静态文件,而是运行一个持续运行的进程
- 监控需求不同:需要关注内存、CPU、响应时间、吞吐量
- 安全要求更高:服务端代码直接接触数据库和敏感数据
本书会从前端开发者熟悉的概念出发,帮助你建立完整的后端工程化知识体系。
本书的核心内容
TypeScript 最佳实践
TypeScript 在 Node.js 中的应用与前端略有不同。我们会讨论 tsconfig 配置、类型声明、编译策略等话题。
完整测试体系
从单元测试到集成测试,从 Mock 技巧到测试覆盖率,建立可信赖的质量保障体系。
CI/CD 流水线
使用 GitHub Actions 构建自动化流水线,实现代码推送即部署。
容器化与部署
Docker 最佳实践、多阶段构建、Kubernetes 入门,以及 PM2 进程管理。
日志与监控
专业的日志系统设计,APM 接入,以及问题诊断方法。
配置管理
多环境配置、密钥管理、功能开关等企业级实践。
本书结构
第一部分:TypeScript 工程化 tsconfig 配置、类型实践、编译策略。
第二部分:代码质量保障 ESLint、Prettier、代码审查规范。
第三部分:测试体系建设 单元测试、集成测试、E2E 测试、测试驱动开发。
第四部分:CI/CD 实践 GitHub Actions、自动化测试与部署。
第五部分:容器化与部署 Docker、PM2、Kubernetes 入门。
第六部分:日志与监控 日志系统、APM、告警设计。
第七部分:配置与环境管理 多环境配置、密钥管理、功能开关。
第八部分:项目组织与协作 Monorepo、版本管理、发布流程。
目标读者
本书适合:
- 希望建立完整工程化体系的 Node.js 开发者
- 从前端转型全栈的工程师
- 负责 DevOps 工作的技术人员
- 想要提升团队开发效率的技术负责人
本书假设你已经有 Node.js 开发经验,熟悉 npm/pnpm,了解基本的命令行操作。
技术约定
- 基于 Node.js v20 LTS
- 使用 TypeScript 5.x
- CI/CD 使用 GitHub Actions
- 容器化使用 Docker
- 测试使用 Vitest(兼顾 Jest)
工程化是专业的标志
一个人能写出正确的代码,说明他是合格的程序员;一个团队能持续交付高质量的软件,说明他们是专业的工程团队。
工程化就是让这种持续交付成为可能的基础设施。它看起来不那么"有趣"——没有炫酷的技术,没有复杂的算法——但它决定了你的软件能否在生产环境中稳定运行。
让我们开始构建专业的 Node.js 工程体系。