关注Node.js有一段时间,一直没能有机会静下心来学习。一部分是因为课程和项目的压力,更多的原因则是缺乏优秀的系统性资料。虽然有CNode这样优秀的社区,以及《The Node Beginner Book》等外文书籍,但这些或过于零散深入,或不够系统,或浅尝辄止。还好图灵出版社在近期相继推出了《Node Web 开发》和《Node.js开发指南》,不仅填补了国内Node方面书籍的空白,也为像我一样的菜鸟提供了系统性学习的机会。

言归正传,下面就结合我读《Node.js开发指南》试读章节的感受以及自身的浅显认识,向大家以一个菜鸟的视角来理解Node.js。学识有限,语言粗俗接地气,欢迎拍砖。

1.Node.js是什么

简单来说,Node.js(江湖上更多的将其称为Node)是一个让javascript运行在服务器端的开发平台。后缀js也显式的告诉了我们它与javascript千丝万缕的联系。

2.菜鸟对Node.js的认识

由于Node诞生之年较晚,所以它得天独厚的站在的了巨人的肩膀,结合了很多原有前后端开发的的技术特点和优势。

1)Node.js是一个实时web平台,其最大的优势就是充分考虑了实时响应和超大规模数据要求下的可扩展性。在当今这个上至国家领导人,下至扫地阿姨,全民大数据,全民云计算的时代,Node的这一特性使得它自诞生之初起,就树立了一个天之骄子的形象。

2)采用单线程、异步式IO、事件驱动的设计模型。恰巧本人最近在开发一个基于Reactor的网络库,采用的正是单线程事件驱动的方式,所以切身体会到这一模型相对于使用多线程,多进程来处理网络IO所带来的优势,它不仅大大降低了开发的复杂性(多进(线)程之间的交互与同步),而且大大提升了系统效率。特别说一点,对于我这个多线程半调子,在调试方面,这样的模型也比多线程更容易发现问题。(相信被多线程搞到记忆力严重衰退的广大程序猿同胞深有感触吧)

3)强大而灵活的包管理器,拥有规模庞大的第三方模块。这些模块包括网站开发框架、MongoDB等数据库接口、调试支持、加密解密,css生成工具、邮件支持等等等等……连VMware以及微软这样的江湖大佬也赶紧跑来亲近亲近,收在帐下,应用于自家平台。我们可以用这些来开发具有复杂逻辑的网站、命令行工具、单元测试工具、图形界面程序、javascript编译器等等……正是有了这些强大的模块,让我们一个平台,一种语言,打遍天下无敌手。有了Node,妈妈再也不用担心我的学习啦!

4)使用V8作为其javascript的引擎也是Node一大特点。说起V8,熟悉Chrome的朋友应该都不陌生,这款号称世界上最快的javascript引擎,在Chrome超越IE称为浏览器头把交椅的过程中可谓功不可没。该引擎即时编译的执行速度已经接近本地代码执行速度,给Node.js平台的速度提供了强有力的保障。

5)Node.js内建了HTTP服务器支持。这样我们就省去了使用PHP等语言开发网站之前,先要被大损脑细胞的Lamp平台的配置折磨到死的过程(当然现在可以用很多大牛写的脚本来一键配置)。并且有了内建的HTTP服务器,使得调试与部署更加的方便。

6)对传统高效开发语言C/C++的支持。历史已经证明C/C++在性能上的优势地位,几十年的积累,产生很多优秀的开发库,Node可以调用C/C++代码这一特点使得我们仍然可以继续沿用前人的优秀成果,并且可以将开发中对性能有极大需求的部分使用C/C++来开发。(C/C++开发者福音,哈哈)

Node.js作为一个新生事物能有这么多的优点,令人欣慰。当然,也正是由于Node.js的发展时间还很短,Node也存在一些问题。例如,异步式开发不符合常规线性思路,优秀框架仍然不多,平台稳定性亦差强人意等等……

3.菜鸟对Node.js未来的浅薄看法

Node.js自2009年诞生起,就深受开源社区欢迎,一大批优秀的开发者加入Node大家庭,这使得其高速发展,当然,对于Node的质疑声也一直存在,正如对C++ java的质疑几十年来从未停止,有质疑,才有发展。虽然目前仍然存在一些问题,随着时间推移,一定会被逐渐的解决。另外,Node在开源社区十分火热,历史证明,开源社区的产品与封闭的商业公司的产品,总是发展的更快更好。 当今时代,计算机产业高速发展,“大规模”“海量”“高并发”已经深入各个领域,这正是Node.js崭露头角的时候。随着更多平台(例如cloud foundry)提供对Node.js的支持,更多的公司(例如淘宝)开始重视与应用Node.js,更多的开发者学习使用Node.js,我相信在未来Node.js的前途一片光明。

4.对该书的感受

最后说一下我阅读《Node.js开发指南》试读章节的感受。首先感叹一下作者如此年轻,却在技术领域有如此造诣,想我都在读研了,仍然只是芸芸众生中的沧海一粟,惭愧。其次,这本书是我见过的第一本系统性的介绍Node.js的书籍。虽然只读了前部分,但从目录可以看出,本书先讲安装配置、基础入门再到核心知识,然后用一个微博网站实例来理论结合实际,最后再将一些高级特性。相信通过读这本书,一定会对Node.js有一个系统性的认识。另外,写书风格很好,虽然是国产,但比某些翻译国外大牛的书,至少在语言上流畅很多。

另外,需要说明一下,写这篇文章的原因是图灵和javaeye社区联合举行的“ITeye 8月技术图书有奖试读”活动。原文链接: http://wangtengchao.iteye.com/blog/1620744#bc2276243