《Node.js 后端全程实战》自序

  • 《JavaScript全栈开发》:https://book.douban.com/subject/35493728/
  • 《Vue.js全平台前端实战》:https://book.douban.com/subject/35886403/
  • 《Node.js后端全程实战》:https://book.douban.com/subject/36374893/

《Node.js 后端全程实战》这本书是本人“全栈三部曲”系列的收官之作,整个系列的创作过程起源于我某年某月某日在 Facebook 上看到的一张名为“如何成为全栈工程师”的图,图中堆叠着一摞足足半人多高的书籍,其中除了最基本的、与 HTML、CSS 相关的书籍之外,还有介绍浏览器端编程的 JavaScript 语言及其框架的书若干本,在服务器端使用的语言(例如 Java、C# 等)及其框架的书又是若干本,最后再加上关于 MySQL、SQLite3 这类数据库的以及关于 Apache 服务器的书,一共十几本,颇为壮观。总而言之,那张图无看起来无论如何都不想像是要鼓励初学者的样子。于是,我最初的设想是:尝试用一本书、一门编程语言介绍那张图中提及的主要技术知识。

然而,早在这个系列的第一本书 —— 《JavaScript 全栈开发》的审阅阶段,就不断地听到有读者反馈说:如果只使用 DOM 和 BOM 接口来编写客户端应用,或者只使用 Node.js 运行平台的原生接口编写服务端应用,那么对于大多数人来说,这都将是一个编码量巨大,调试和维护非常繁复的工作。诚然,《JavaScript 全栈开发》作为本系列作品的基础篇,它更倾向于为读者介绍 JavaScript 这门编程语言本身和客户端/服务端应用程序架构的理论基础,其中所演示的项目更多是属于我们在实验环境中所进行的各种学习和研究活动。

在现实的生产环境中,开发者们大多数时候是使用应用程序框架和专业的运维工具来应对具体项目的开发工作的。基本上,除了编程语言的基本语法之外,开发者的设计开发能力很大程度上取决于如何根据自己面对的问题找到适用的框架,并在合理的时间内掌握该框架的使用方法,并用它快速地构建自己的项目。因此在基础篇之后,我们将致力于利用具体的项目实践来向读者介绍如何构建这种“在做中学,在学中做”的能力。当然了,这些框架和工具往往都是存在适用领域边界的。换而言之,我们在从事客户端应用的开发工作时,需要使用的是适用于该领域的框架及相关的项目构建工具,而在从事服务端应用的开发与维护工作时则要使用服务端领域的框架与相关的运维工具,它们各自可能都需要用一本书的篇幅来介绍。


(资料图片)

因此,作为《JavaScript 全栈开发》在客户端开发方向上的补充,我在去年出版了《Vue.js 全平台前端实战》一书。在该书中,我们以 Vue.js 框架及其相关工具为例为读者介绍了客户端开发工作的相关实践。而各位手中的这本书则是其在另一方向上的补充,我们将以基于 Express.js 框架及其相关的工具为例介绍 Node.js 应用程序在服务端的开发与维护。

0.1 本书简介

简而言之,这本书将致力于探讨在服务端领域中如何以基于 Node.js 运行平台的 Express.js 框架为中心,并搭配 Docker、Kubernetes 等服务端运维工具为读者介绍服务端应用的开发与维护工作。我们计划从 Express.js 框架的基本使用开始,循序渐进,层层深入地介绍 HTTP 服务的创建与开发、RESTful API 的设计与实现、数据库接口设计与实现、以及服务端应用的部署与维护。在这过程中,我将会在书中提供大量可读性高,可被验证的代码示例,以帮助读者理解书中所介绍的技术概念、编程思想与程序设计理念。

本书的主体将由两部分组成,第一部分介绍的是 Express.js 框架的基本使用方法,这里将用 4 章的篇幅介绍 Express.js框架本身的设计理念、核心组件、中间件机制以及项目组织方式等议题。在这部分中,我们将会具体介绍如何利用Express.js 框架创建一个基于 RESTful API 规范的服务端应用。第二部分将会介绍服务端应用的部署与运维工作。在这部分中,我们也将用 4 章的篇幅具体介绍如何使用 Docker、Kubernetes 等服务端运维工具来实现对本书第一部分开发的应用程序的自动化部署与维护。下面是本书各章的内容简介:

0.2 读者须知

由于这是一本专注于介如何使用 Express.js 框架进行开发,并对开发结果开展运维工作的小书,而 Express.js 是一个基 Node.js 运行平台的服务端应用开发框架。所以在阅读这本书之前,我们会希望读者已经掌握了 JavaScript 语言、Node.js 原生接口的基本使用方法,并了解与 HTTP 协议相关的服务器概念等基础知识。如有需要,我会建议读者先去阅读一下这本书的前作——《JavaScript全栈开发》,或者其他介绍了上述基础知识的书籍。

当然了,由于 JavaScript 社区的开发框架不仅琳琅满目,选择众多,而且新陈代谢极为快速,这意味着等到这本书写完并最终出版之时,开发者们在服务端领域很有可能已经有了比 Express.js 框架更好的选择。所以基于“授之以鱼不如授之以渔”的原则,本书的真正目的是希望帮助读者掌握快速学习任意一种新框架的能力,这需要我们更深入地去理解服务端框架的设计思路,理解为什么决定开放那些接口给用户,为什么对用户隐藏那些实现,这就需要读者自己具备开发框架的能力。换句话说,虽然不必重复发明轮子,但一个优秀的工程师或设计师应该了解轮子是如何被发明的,这样才能清楚在怎么样的轮子上构建怎么样的车。

除此之外,我在这里还需要特别强调一件事:本书中所有关于“线上简历”应用的实现代码都是基于本书各章节中的代码占比及其阅读体验等众多写作因素进行了平衡考虑之后产生的最简化版本,其中省略了绝大部分与错误处理及其他辅助功能相关的代码。因此,如果想了解实际项目中某些具体问题的解决方案,还需请读者自己去查阅本书附带源码包中的项目。当然了,在我个人看来,如果想要学好并熟练掌握一个开发框架,最好的办法就是尽可能地在实践中使用它们,在实际项目需求的驱动下模仿、试错并总结使用经验。所以在这本书中,我们并不鼓励直接复制/粘贴的本书附带源码包中的演示代码,我们更期待读者“自己动手”去模仿书中提供的示例,亲手将自己想要执行的代码输入到计算机中,观察它们是如何工作的。然后,试着修改它们,并验证其结果是否符合预期。如果符合预期,就总结当下的经验,如果不符合预期,则去思考应该做哪些调整来令其符合预期。如此周而复始,才能让学习效果事半功倍。

最后,希望如《道德经》所言:一生二,二生三,三生万物,这三本书能够帮助读者构建起成为全栈工程师的坚实基础。

推荐内容