刚开始接触Node.js应该是在为Angular2准备本地开发环境。当时也没多想,就把Node.js当做成一个环境依赖。直到最近朋友将一个项目源码发给我看了之后,彻底被神奇的Node.js代码给吸引住了。于是准备走进Node.js的世界领略一番。

《深入浅出Node.js》2013年12月第1次印刷,于2017年4月第17次印刷。这是我选择此书学习的第一个原因。其次是因为朴灵老师本身是Node.js布道者,写了不少文章介绍Node.js的细节,也贡献为Node.js贡献了不少代码。买书之前还特意爬了一下知乎,很多开发者也推荐本书。

全书一共11章:

  • 第1章 Node简介
  • 第2章 模块机制
  • 第3章 异步I/O
  • 第4章 异步编程
  • 第5章 内存控制
  • 第6章 理解Buffer
  • 第7章 网络编程
  • 第8章 构建Web应用
  • 第9章 玩转进程
  • 第10章 测试
  • 第11章 产品化

附录内容4部分:

  • 附录A 安装Node
  • 附录B 调试Node
  • 附录C Node编码规范
  • 附录D 搭建局域NPM仓库

从目录可以看出来本书知识结构清晰完整配合官网文档一起学习快速上手Node.js不是一件难事。

1、为什么选择Node.js?

个人选择Node.js学习的原因很大程度上是取决于其本身的特点。跨平台、事件驱动、非阻塞式I/O、轻量、简单、易学、高效、完整的开源生态系统。

闲话少叙,一起看代码:

这是官网的第一个入门Demo,也是编程界的明星工程——Hello World

第一个Node.js项目

运行效果,如下图:

页面渲染效果

2、接下来要发生什么?

通过几行编写简单的js代码,我们确实完成了一个简单的Web工程。虽然只是很简单的渲染了一段文本。在第一章内容中朴灵老师讲述了Node.js的简介,接着开始介绍Node.js模块机制

读完第二章第一小节CommonJS规范,会明白const http = require('http');其实是引用Node.js中的http模块。CommonJS规范帮助Node形成了良好的骨架,少了很多纷乱。模块机制还介绍了Node的模块实现、核心模块、C/C++扩展模块、模块调用栈、包与NPM、前后端共用模块

从第三章开始到第七章开始接触的算是比较重要的模块,不过也没想象中的那么复杂。如果之前有服务端语言开发经验的开发者最好不要被那些奇怪的写法给吓着了,从而放弃学习。Node.js的异步核心是事件循环,所以对于异步编程的学习要多点耐心。掌握了之后再去学习内存控制、理解Buffer、网络编程

网络编程主要介绍了构建TCP服务、UDP服务、HTTP服务、WebSocket服务和网络服务与安全。“嫁衣”终于有了大概的模样,到了构建Web应用章节看到了那些熟悉的字眼好是亲切Cookie、Session、缓存、表单、页面渲染......学完这些内容,会对以往的认知有了更加深刻的理解,也会有“原来那样的魔法是这样实现的”一番恍然大悟的感慨。

3、还没有结束,故事才刚开始?

Node.js的诞生深深的影响了前端发展。因此会有赞誉声,当然也会有一些反对声。像Java、JavaScript、Angular、Vue、PHP等技术一样。不过故事还长,只要不提前离场,总会领略无限风光。除了使用Node.js开发Web应用,还可以针对一些高级的开发板进行编程,这绝对是一件有趣的事情。当然能够做的事情还有很多,所以请别失望。

PS:作为一位小朋友,自己从不盲目推崇某种技术。只要能够解决特定场景下的问题,就是眼下的好技术。对于技术应常怀一颗敬畏之心。因为世上本就没有糟糕的技术,只有滥用技术的开发者。