致谢

这本书的产出过程其实完全不在意料之中。最早找到我的杨海玲老师当初还在图灵公司,那还是2011年的时候,作为Node发烧友,我其实是极度心虚的,因为我除了作为前端工程师所拥有的那点JavaScript知识外,只有学习Node的热情,当时我十分感动,然后拒绝了杨老师的邀请。

随后,崔康老师在CNode社区看到我的那篇“用Node.js打造你的静态文件服务器”后,邀请我加入他在InfoQ上开辟的“深入浅出Node.js”专栏,出于对写作的恐惧,我也拒绝了崔康老师的邀请。崔康老师随后以“写专栏只要每个月写点,远比写书容易”的理由劝服我,我随即在心中拿捏了计划,觉得可以将自己的学习经验写出来,边学边写,前前后后大概可以写出许多东西来,于是答应了崔康老师。在随后的大半年时间里,我在InfoQ上发表了7篇专栏文章。可能是圈子太小,杨老师在寻找Node原创书作者的过程中经过一圈又从崔康老师的推荐下回到了我这里。因为心中已经有些眉目,知道自己想要表达些什么,加上加入阿里巴巴数据平台数据产品部门(EDP)专职从事Node开发后,团队的领导玄澄和苏千都十分鼓励我,觉得这使命冥冥之中该由我去完成,于是应承了这本书的写作。

当然,这只是苦逼日子的开始,尽管每天接触的还是JavaScript语言,但实际上已经从前端领域进入了后端领域,我的知识面远远不足以支撑这本书的写作。跨领域的过程是相当痛苦的,很少有人喜欢尝试改变已有的习惯,而我还要在这个基础上将我还不太熟悉的东西重新分享出来,要保证没有错误,这是远比专栏写作高得多的挑战,为此我屡次有上了贼船的感觉。直觉上,因为Node是JavaScript语言,所以前端工程师掌握它是相对容易的,但是事实上,“行百里者半九十”,熟悉JavaScript只是帮助我少了十里路,在整个历程中,还有九十里需要完成,这就是兴趣与现实之间的差距。

经历了拖稿、延期以及因为没能按期出版而输掉iPad奖励等打击,最终梳理出了这本书的内容。与大多数介绍Node的书不同,这些内容的写作过程就是我自己学习Node的过程,这个过程充斥了改变带来的痛苦和收获,每一章讲述的侧重点都不相同,但又都是Node。我在这个过程中完成了自己在操作系统、网络方面的知识补充,蜕变的过程总是寂寞和喜悦的,过去因为前后端语言的不同而分散疏离的知识点,奇迹般地因为Node重新组合连接起来,这大概就是乔布斯提到的“connecting the dots”吧。写完这本书时,我前端工程师的职位名已经被老板摘掉,姑且认为是玄澄对我转变过程的认可。

最后,非常感谢王军花老师跟进本书的进度,感谢CNode社区的朋友们提出宝贵建议,感谢阿里巴巴EDP部门给予我最好的环境去成长,让这本书更精彩。

想不到曾经以文艺青年自诩的我,以这样的形式完成了一本书的写作,既在意料之外,也在意料之中。这本书也不能用来致青春,这里献给我的母亲,没有您的影响,不可能存在这本书。

目录

  • 序一
  • 序二
  • 前言
  • 致谢
  • 第 1 章 Node简介
  • 第 2 章 模块机制
  • 第 3 章 异步I/O
  • 第 4 章 异步编程
  • 第 5 章 内存控制
  • 第 6 章 理解Buffer
  • 第 7 章 网络编程
  • 第 8 章 构建Web应用
  • 第 9 章 玩转进程
  • 第 10 章 测试
  • 第 11 章 产品化
  • 附录 A 安装Node
  • 附录 B 调试Node
  • 附录 C Node编码规范
  • 附录 D 搭建局域NPM仓库