全栈JavaScript 实践
全栈JavaScript 实践
Milecia McGregor
何婷婷, 余琦 译
出版时间:2026年07月
页数:464
“本书是中级开发人员的规则改变者。本书作者提供了清晰的见解,帮助人们在 JavaScript 这一全球最流行的编程语言中,掌握全栈开发的挑战。这是职业生涯进阶的必读书籍。”
——Gant Laborde
DTM,O’Reilly 作者及疯狂科学家作者
“如果你是一名全栈开发人员,正为提升职业生涯所需理解的海量工具、技术和流程感到不知所措,那么你一定要读读这本书。本书作者针对最复杂的技术主题和关键的软技能提供了丰富的实用建议,这些将帮助你在日益激烈的竞争领域中脱颖而出。”
——Ethan Brown,OptionLab

作为一名在职软件开发人员,你已经知道如何用扎实的代码完成任务,无论是在前端还是后端。现在,你已准备好步入职业生涯的下一个阶段,需要培养那些让资深开发人员成为整个系统权威的技能。这本实用的书向你展示了在云平台上托管全栈Web应用程序所需的一切。
本书作者将帮助你了解整个系统是如何运作的,以及资深开发人员是如何做出技术决策的。你将学习设计和开发原则,以及何时应用它们。你还将发现与不同团队合作的策略,并理解产品团队是如何做出决策的。
本书分为四个部分,向你展示如何:
● 将设计转化为任务,并提出引导成功的技术和产品问题。
● 做出后端架构决策,考虑可扩展性、安全性和第三方服务等因素。
● 在处理状态与数据管理、性能以及其他与前端应用相关的关注点时,构建项目的用户界面。
● 集成前端、后端及其他系统,并将全栈应用部署到生产环境。
  1. 前言
  2. 第一部分 启动你的新项目
  3. 第1章 启动项目
  4. 1.1 你将构建的项目
  5. 1.2 项目启动会议
  6. 1.3 设计考量
  7. 1.4 数据驱动设计
  8. 1.4.1 将设计拆分为任务
  9. 1.4.2 从功能需求中细化任务
  10. 1.5 与产品及其他团队讨论时间表
  11. 1.5.1 与其他开发团队沟通
  12. 1.5.2 与DevOps协作
  13. 1.5.3 与QA团队合作
  14. 1.5.4 与客户支持团队协调
  15. 1.6 总结
  16. 第二部分 构建后端
  17. 第2章 搭建后端
  18. 2.1 为什么选择NestJS
  19. 2.2 选择项目方案
  20. 2.3 搭建NestJS
  21. 2.3.1 本地测试后端
  22. 2.3.2 更新README
  23. 2.3.3 添加CHANGELOG
  24. 2.4 单体和微服务架构
  25. 2.5 可考虑的替代架构
  26. 2.6 选择API设计模式:REST和GraphQL
  27. 2.7 总结
  28. 第3章 构建数据模型
  29. 3.1 初始化考量
  30. 3.2 绘制数据模型图
  31. 3.3 搭建Postgres
  32. 3.4 决定使用哪种ORM
  33. 3.5 编写迁移
  34. 3.6 初始化数据库
  35. 3.7 总结
  36. 第4章 REST API
  37. 4.1 确保前端与后端达成一致
  38. 4.2 创建约定文档
  39. 4.3 创建API及第一个端点
  40. 4.3.1 创建订单端点
  41. 4.3.2 处理Orders服务
  42. 4.3.3 检查数据库连接
  43. 4.4 总结
  44. 第5章 第三方服务
  45. 5.1 选择第三方服务
  46. 5.2 潜在服务列表
  47. 5.3 集成Stripe
  48. 5.3.1 编写Controller
  49. 5.3.2 编写Service
  50. 5.4 总结
  51. 第6章 后台任务
  52. 6.1 更新后台架构
  53. 6.2 使用定时任务
  54. 6.2.1 警报与监控
  55. 6.2.2 日志
  56. 6.2.3 数据同步和任务执行中的问题
  57. 6.2.4 未来需要考虑的事项
  58. 6.3 总结
  59. 第7章 后端测试
  60. 7.1 为什么要花时间写测试
  61. 7.2 如何编写测试
  62. 7.3 模拟数据
  63. 7.4 总结
  64. 第8章 后端安全考虑
  65. 8.1 身份验证
  66. 8.2 授权
  67. 8.3 OWASP Top 10
  68. 8.4 其他值得注意的实践
  69. 8.5 总结
  70. 第9章 后端调试
  71. 9.1 详细的日志消息
  72. 9.2 环境配置
  73. 9.3 追踪bug的策略
  74. 9.4 帮助其他开发者调试
  75. 9.5 调试清单
  76. 9.6 总结
  77. 第10章 后端性能
  78. 10.1 指标
  79. 10.2 警报与监控
  80. 10.3 缓存
  81. 10.3.1 缓存策略
  82. 10.3.2 不同类型的缓存
  83. 10.3.3 缓存在Redis中的实现
  84. 10.4 产品层面的考量
  85. 10.5 总结
  86. 第11章 可扩展性考虑
  87. 11.1 扩展类型
  88. 11.1.1 垂直扩展
  89. 11.1.2 水平扩展
  90. 11.1.3 混合扩展
  91. 11.1.4 资源扩展
  92. 11.2 扩展最佳实践
  93. 11.2.1 制定计划
  94. 11.2.2 将计划形成文档
  95. 11.2.3 运行测试
  96. 11.2.4 沟通进度
  97. 11.2.5 逐步迁移流量
  98. 11.3 总结
  99. 第12章 监控、日志记录与事故处理
  100. 12.1 日志和监控的用途
  101. 12.1.1 使用日志进行调试
  102. 12.1.2 使用监控来指导操作
  103. 12.1.3 监控和日志工具
  104. 12.2 事故操作手册
  105. 12.2.1 操作手册
  106. 12.2.2 事故响应模板
  107. 12.2.3 无责事后分析
  108. 12.3 总结
  109. 第三部分 构建前端
  110. 第13章 搭建前端
  111. 13.1 前端架构决策
  112. 13.2 选择前端框架
  113. 13.2.1 应用构建选项
  114. 13.2.2 常用组件
  115. 13.2.3 选择依赖包
  116. 13.3 与其他团队合作
  117. 13.4 总结
  118. 第14章 构建React应用
  119. 14.1 设置初始React应用
  120. 14.1.1 设置Linter和Formatter
  121. 14.1.2 设置构建配置
  122. 14.1.3 设置样式
  123. 14.1.4 设置测试
  124. 14.1.5 设置CHANGELOG和README
  125. 14.1.6 在本地运行应用
  126. 14.2 构建第一个功能
  127. 14.2.1 项目结构
  128. 14.2.2 设置路由
  129. 14.2.3 更新应用的根文件
  130. 14.3 总结
  131. 第15章 状态管理
  132. 15.1 组件状态的工作原理
  133. 15.1.1 useState
  134. 15.1.2 useReducer
  135. 15.1.3 useContext
  136. 15.1.4 了解在应用的哪个级别管理状态
  137. 15.2 不同的状态管理方法
  138. 15.3 设置状态管理器
  139. 15.4 总结
  140. 第16章 数据管理
  141. 16.1 潜在的数据获取工具
  142. 16.2 使用Axios和TanStack Query处理API调用
  143. 16.2.1 .env文件
  144. 16.2.2 处理加载状态
  145. 16.2.3 处理错误状态
  146. 16.2.4 配置请求头
  147. 16.3 何时检查后端功能
  148. 16.4 总结
  149. 第17章 自定义样式
  150. 17.1 可访问性
  151. 17.1.1 创建一个可访问的表单
  152. 17.1.2 检查你的可访问性实现
  153. 17.1.3 更多可访问性考量
  154. 17.2 一致性设计
  155. 17.3 自定义主题
  156. 17.4 响应式设计
  157. 17.5 总结
  158. 第18章 前端错误处理
  159. 18.1 错误边界方法
  160. 18.1.1 错误组件
  161. 18.1.2 记录错误
  162. 18.2 用户校验错误
  163. 18.3 API错误
  164. 18.4 总结
  165. 第19章 前端安全考量
  166. 19.1 常见漏洞
  167. 19.1.1 业务逻辑校验
  168. 19.1.2 会话管理
  169. 19.1.3 软件包版本维护
  170. 19.1.4 输入校验
  171. 19.2 其他原则
  172. 19.3 如何检查你自己的应用
  173. 19.4 总结
  174. 第20章 前端性能
  175. 20.1 基准指标
  176. 20.1.1 Lighthouse工具
  177. 20.1.2 Sitespeed.io
  178. 20.2 改进领域
  179. 20.2.1 打包文件大小分析
  180. 20.2.2 构建配置
  181. 20.2.3 缓存配置
  182. 20.2.4 懒加载
  183. 20.2.5 预加载
  184. 20.2.6 CSS、图像和字体
  185. 20.3 总结
  186. 第21章 前端测试
  187. 21.1 确定测试场景
  188. 21.2 单元测试
  189. 21.2.1 Jest和React Testing Library
  190. 21.2.2 Vitest
  191. 21.2.3 Mock Service Worker
  192. 21.3 使用Cypress进行e2e测试
  193. 21.4 总结
  194. 第22章 前端调试
  195. 22.1 调试过程
  196. 22.2 查阅日志
  197. 22.3 检查代码
  198. 22.3.1 使用console.log消息
  199. 22.3.2 使用断点
  200. 22.3.3 使用单元测试
  201. 22.3.4 使用Git
  202. 22.4 使用浏览器开发者工具
  203. 22.4.1 Elements选项卡
  204. 22.4.2 Sources选项卡
  205. 22.4.3 Network选项卡
  206. 22.4.4 Application选项卡
  207. 22.5 在其他环境中调试
  208. 22.6 在意想不到的地方调试
  209. 22.7 总结
  210. 第四部分 部署全栈应用
  211. 第23章 全栈部署设置
  212. 23.1 参与部署的团队
  213. 23.2 后端与前端的连接步骤
  214. 23.2.1 后端步骤
  215. 23.2.2 前端步骤
  216. 23.2.3 清理步骤
  217. 23.2.4 文档和维护步骤
  218. 23.3 总结
  219. 第24章 集成测试
  220. 24.1 测试用例
  221. 24.2 使用Cypress进行端到端测试
  222. 24.3 使用Playwright进行端到端测试
  223. 24.4 使用Nightwatch进行端到端测试
  224. 24.5 包之间的比较
  225. 24.6 总结
  226. 第25章 进行部署
  227. 25.1 部署仅前端或仅后端的更新
  228. 25.2 部署策略
  229. 25.2.1 发布日期
  230. 25.2.2 版本发布
  231. 25.2.3 蓝绿部署
  232. 25.2.4 金丝雀部署
  233. 25.3 回滚策略
  234. 25.3.1 部署旧版本
  235. 25.3.2 还原或重置PR
  236. 25.3.3 部署热修复
  237. 25.4 总结
  238. 第26章 集成中要考虑的点
  239. 26.1 前后端要考虑的点
  240. 26.2 第三方服务相关考量
  241. 26.3 在生产环境中的数据和安全
  242. 26.4 容器化你的应用
  243. 26.5 总结
  244. 第27章 构建CI/CD流水线
  245. 27.1 创建你自己的流水线
  246. 27.1.1 速度考量
  247. 27.1.2 Git钩子
  248. 27.1.3 GitHub配置
  249. 27.1.4 CircleCI配置
  250. 27.2 环境流水线
  251. 27.2.1 功能环境(Feature Environment)
  252. 27.2.2 开发环境(Development Environment)
  253. 27.2.3 预发布环境(Staging Environment)
  254. 27.2.4 生产环境(Production Environment)
  255. 27.2.5 环境变量
  256. 27.3 总结
  257. 第28章 Git管理
  258. 28.1 分支策略
  259. 28.1.1 常见分支和合并流程
  260. 28.1.2 PR审查
  261. 28.1.3 针对较小功能的分支
  262. 28.1.4 针对较大功能实现的分支
  263. 28.1.5 压缩提交(Squashing Commits)
  264. 28.1.6 变基与合并分支
  265. 28.2 处理合并冲突
  266. 28.2.1 与进行更改的开发人员讨论
  267. 28.2.2 使用git bisect查找受影响的文件
  268. 28.2.3 手动比较文件更改
  269. 28.3 总结
  270. 第29章 项目管理
  271. 29.1 Sprint讨论
  272. 29.1.1 估点
  273. 29.1.2 开发容量
  274. 29.1.3 功能需求
  275. 29.1.4 开发团队工单评审
  276. 29.1.5 路线图
  277. 29.2 定义和管理任务
  278. 29.2.1 保持团队感知
  279. 29.2.2 撰写并澄清工单或故事卡
  280. 29.2.3 考虑额外开销任务
  281. 29.2.4 调整自己的节奏
  282. 29.2.5 管理上下文切换
  283. 29.2.6 保持沟通畅通
  284. 29.3 总结
  285. 第30章 理解业务领域
  286. 30.1 特定领域的知识
  287. 30.1.1 向直接在领域内工作的人学习
  288. 30.1.2 参加课程
  289. 30.1.3 在该领域工作
  290. 30.2 架构和系统设计决策
  291. 30.2.1 领域驱动设计
  292. 30.2.2 C4设计
  293. 30.3 向其他团队学习
  294. 30.3.1 加入销售通话
  295. 30.3.2 加入用户研究
  296. 30.3.3 与市场部门交谈
  297. 30.3.4 旁听客户支持通话
  298. 30.3.5 了解法律合规
  299. 30.4 文档考量
  300. 30.4.1 定义术语
  301. 30.4.2 只保留相关信息
  302. 30.4.3 分享你的知识
  303. 30.4.4 展示产品如何影响组织
  304. 30.5 总结
  305. 第31章 在你的职业生涯中参与不同类型的项目
  306. 31.1 全新应用程序的考量因素
  307. 31.1.1 理解你试图解决的问题
  308. 31.1.2 构建数据模式
  309. 31.1.3 决定架构
  310. 31.1.4 选择你的云提供商
  311. 31.1.5 构建后端
  312. 31.1.6 构建前端
  313. 31.1.7 集成后端和前端
  314. 31.1.8 设置你的CI/CD流水线
  315. 31.1.9 执行QA测试
  316. 31.1.10 在生产环境中检查你的应用程序
  317. 31.2 现有应用程序的考量因素
  318. 31.2.1 获取你所需服务的访问权限
  319. 31.2.2 运行开发实例
  320. 31.2.3 在生产环境中查看应用程序
  321. 31.2.4 在非生产环境中查看应用程序
  322. 31.2.5 阅读代码
  323. 31.2.6 记录潜在的重构
  324. 31.2.7 提问并记录答案
  325. 31.2.8 提高代码质量
  326. 31.2.9 添加测试
  327. 31.2.10 了解不同警报的含义
  328. 31.3 你的职业生涯
  329. 31.3.1 技术路线
  330. 31.3.2 管理路线
  331. 31.3.3 职业日志
  332. 31.3.4 转向其他领域
  333. 31.4 总结
  334. 作者介绍
  335. 封面介绍
书名:全栈JavaScript 实践
作者:Milecia McGregor
译者:何婷婷, 余琦 译
国内出版社:中国电力出版社
出版时间:2026年07月
页数:464
书号:978-7-5239-1150-1
原版书书名:Full Stack JavaScript Strategies
原版书出版商:O'Reilly Media
Milecia McGregor
 
Milecia McGregor是一位高级软件工程师,曾使用JavaScript、React、Node.js、Python、SQL、AWS,以及许多其他工具构建Web应用。她拥有自己的企业,在多个国际技术会议上发表演讲,并担任过从前端开发人员到副工程总监等多种职位。
 
 
本书封面上的动物是一只茶色蛙口鸟(学名:Podargus strigoides),它原产于澳大利亚和塔斯马尼亚的森林与林地。
虽然外形酷似猫头鹰,但茶色蛙口鸟实际上和夜鹰更为接近。它们拥有宽大的蛙状嘴、明亮的黄色眼睛,以及柔软、斑驳的棕灰色羽毛,这些特征能让它们与树皮融为一体,达到极佳的伪装效果。
茶色蛙口鸟主要在夜间活动,是典型的肉食性鸟类,捕食对象包括昆虫、蜘蛛、蠕虫、蛞蝓、蜗牛、小型哺乳动物、爬行动物以及青蛙。它们以伪装能力和无声飞行闻名,是高效的猎手。
目前,国际自然保护联盟(IUCN)将茶色蛙口鸟列为“无危”物种。不过,森林砍伐和城市化造成的栖息地丧失,仍可能对其种群构成威胁。O’Reilly封面上的许多动物都是濒危物种;无论是否濒危,它们对世界而言都很重要。
购买选项
定价:128.00元
书号:978-7-5239-1150-1
出版社:中国电力出版社