前言
Node.js作为现代Web开发的技术底座,其历史最早可以追溯到2009年,当时作为独立开发者的Ryan Dahl发现传统服务器在处理高并发连接时很容易出现性能瓶颈,因为它们通常都会为每个连接创建一个新的线程,这会消耗大量的内存资源。他注意到Google为Chrome开发的V8引擎具有极快的JavaScript执行速度,且V8引擎是开源的,于是他通过将V8引擎从浏览器中剥离,结合事件循环和非阻塞I/O模型,开发了一个全新的JavaScript运行环境,这也正是Node.js的雏形。
2009年11月,Ryan Dahl在JSConf EU大会上首次展示了Node.js,引起了广大参会人员的兴趣。2010年,Node.js包管理器(Node.js Package Manager,NPM)的发布彻底改变了JavaScript的开发模式,让JavaScript代码复用变得极其简单,NPM的出现也极大地推动了Node.js生态的发展。同年,Express框架发布,极大地简化了构建Web服务器的流程,让Node.js迅速在服务器领域崭露头角,这一年也被称为Node.js发展的关键节点。2011年,Node.js进入企业级应用,LinkedIn、Uber等公司开始使用Node.js来开发服务器端Web应用,并推动了前后端JavaScript统一的浪潮,让JavaScript从浏览器脚本语言演变成了全栈开发的利器。
2014年,开发者社区对Joyent公司的管理策略感到不满,因此衍生出io.js分支,该分支积极地引入ES6新特性并优化性能,间接推动了Node.js的进步。2015年,为了避免社区继续分裂,Node.js官方基金会成立,Node.js宣布与io.js分支重新合并,这次合并直接促成了Node.js v4.0的诞生,并确定了现在长期支持的版本制度。此后,Node.js进入了正常的迭代周期,新的特性和功能不断被发布,性能、稳定性和安全性也不断得到改善。2017年引入async_hooks模块增强异步追踪,2018年支持HTTP/2,2020年全面转向ES模块,2022年推出核心测试框架。
目前,Node.js已经从一个挑战者变成了Web领域的老大哥。虽然面临Bun和Deno等新兴运行时的激烈竞争,但Node.js凭借极高的稳定性和主动的自我进化,依然牢牢占据着服务端JavaScript的统治地位。总体来说,Node.js并没有变老,它正处于壮年期。它不仅吸收了竞争对手的优点,还保留了自己最核心的护城河: 一个庞大到几乎无法被动摇的NPM生态系统。
笔者早些年是从事移动客户端开发的,有着多年的移动架构和应用开发经验。不过随着大前端理念的出现,移动客户端和前端开发的边界越来越模糊,很多从事前端开发的开发者使用前端技术开发移动客户端,也有很多从事客户端开发的开发者转岗到前端开发,他们的工作也相互补充和相互支持。笔者在大学学的就是软件开发,当时用的还是古老的JSP、SSH、PHP等技术,前端页面和服务器接口都是混在一起的。不过随着前后端分离架构的兴起,软件的开发模式发生了革命性的变化,前端负责页面的渲染和交互,服务器则负责数据业务逻辑处理。由于传统的Web服务器(如Apache)在高并发连接时很容易出现性能瓶颈,因此Ryan Dahl基于Google的V8引擎开发出了全新的JavaScript运行环境,为使用JavaScript开发服务器提供了可能。
笔者大概是在2016年通过React Native跨平台开发技术了解到前端框架,并在随后的工作中,陆续参与了多个前端项目的开发工作,对前端和Node.js框架也有了较为深刻的认识。本书以一名资深前端架构师的视角,从零基础入手,通俗易懂地介绍Node.js框架的基础语法和进阶知识,以及Node.js技术生态的各个细节,并提供了丰富的项目示例,目的是帮助读者边学边练,进而快速且扎实地掌握Node.js框架的各种基础知识。
作为一本实战类型的图书,本书旨在通过理论结合实践帮助读者掌握Node.js后端开发的相关技能,特别适合希望全面学习Node.js技术栈的开发者阅读。同时,本书提供了大量的商业化案例,帮助读者在掌握基础理论知识的同时掌握商业项目的开发流程。相信读者在阅读本书后,能够快速地投入到商业级项目的开发中。
本书共分为12章,由入门与基础、开发进阶和项目实战三部分构成,入门与基础部分主要讲解Node.js的知识基础、常见模块、JavaScript语言基础和数据库基础知识,开发进阶部分则围绕Express、Koa和Egg等当下流行的Node.js框架进行讲解,项目实战部分则包含两个实战项目、项目构建和发布等内容。
Node.js入门与基础(第1~5章)
这部分内容主要由Node.js的知识基础、JavaScript语言基础、Node.js内置模块以及数据库操作等章节构成。本部分内容是Node.js开发的基础,是学习Node.js框架开发必须掌握的基础内容。
Node.js开发进阶(第6~8章)
这部分内容主要由Express、Koa和Egg等流行的Node.js框架构成,也是Node.js框架的技术选型与应用。这部分内容是Node.js框架开发的进阶知识,也是Node.js技术生态的重要组成部分,专业性更强。
Node.js项目实战(第9~12章)
这部分内容主要由Node.js项目、React电商网站和Vue音乐网站、应用性能分析以及项目构建与发布等内容构成,属于Node.js项目实战部分,是对前面基础知识的综合应用与总结。此部分内容以项目实战为主,通过此部分内容的学习,读者将具备商业项目的开发能力。
本书特色
(1) 侧重基础,循序渐进。
本书涵盖Node.js项目开发所需的各方面基础知识,并且对知识点和技术要点的讲解遵循由浅入深的编写思路,非常适合初学者。
(2) 实例丰富,内容翔实。
本书在讲解 Node.js的各个知识点时,运用了大量的实例并配有运行效果图和源码,读者可以参考书中的源码进行学习和扩展。
(3) 案例真实,贴近商业场景。
本书采用的实例大多贴近商业项目开发场景,项目案例遵循商业项目的开发流程,让读者在阅读本书后可以快速上手商业项目的开发工作。
读者对象
正在学习前端开发或有志成为全栈开发者的学习者。
拥有1~3年工作经验,想进一步提升自己的前端开发人员。
培训机构的学员和大中专院校的学生。
最后,感谢支持我的家人、朋友和同事,感谢清华大学出版社各位老师的辛勤付出,让本书能够顺利出版;感谢读者的耐心阅读,希望本书可以带给你预期的收获。限于本人水平,书中疏漏之处在所难免,敬请广大读者批评指正。
编者2026年7月
