作者序

对于一个准备学习Node.js的人来说,如何着手是一个难点。我所引用的参考文献既不是像数据报或EventEmiter这种偏学术性的话题,也不是毫无全局意识的简单说明一个概念。这本书将引导你通过Node.js建立一个完整的项目。首先从一个简单的“Hello World”示例开始,然后建立一个实时的Web应用(real-time web application),他能够处理上千个客户端链接并且实时更新交易信息。

Node.js有什么不同?首先你可以用一个统一的语言实现前后端编程,这意味着你只需要关注一门单一的语言,在前后端切换时没有过多的负担。它也允许共享代码库和模板,这带来了更多的可能性,和更广阔的探索空间。

其次它足够快,像PHP、Python、Ruby这种解释型语言有一个共同的弊病就是速度慢。Joyent的CTO杰森·霍夫曼(Hoffman Jason)曾经探讨过Node.js是如何做到打破操作系统的瓶颈展现出如此高性能的。在单一核心且少于1GB内存的的情况下能够处理10G的流量和100万个链接数,将24个这样的单元集成到一个机器里,其达到的吞吐量水平将超出操作系统和TCP/IP栈的处理能力。换句话说一个程序性能的瓶颈不在于Node.js而在于你的操作系统。

最后其非阻塞的架构很适合处理实时Web应用,JavaScript作为一门编程语言有着精简的API和非阻塞回调机制。目前Javascript有上千个非阻塞的包,这意味着通过这些包可以构建一个完整的Node.js生态系统,同时这个生态系统和平台是完全符合当代实时web应用的需求的。

我确信,对你来说得知Node.js能够实现实时Web应用是一个十分振奋的消息。我也相信通过这本书的学习你能够掌握分析、解决问题的技能。解决一个复杂的问题然后去思考更是一件充满乐趣的事,我在使用Node.js的过程中就有过很多这样的经历。我也希望通过这本书或者你使在用Node.js解决一些实时问题的过程中也能感受到同样的乐趣。

译者序

首先不得不说明一点:这是一本12年的书,其中涉及到的很多技术都已经迭代了很多版本,甚至有些框架库在新版本中API也有所改变。但是庆幸的是这些改变对技术本身理念的影响并不大。

另外我想特意说明一些事情,这是一本以Node.js为核心,讲述如何实现一个实时Web应用的书,所以如果你想通过这本书去了解Node.js深层次的东西,或者原生API,或者你想系统学习Node.js,那么这本书真的不是最好的选择。如果你是个学生或者对Node.js感兴趣,或者想了解如何通过Javascript相关技术实现一个Web应用,那么读一读真本书肯定对你很有帮助。

为了更好的描述书中的内容,语言组织上对比原文会有些出入,因为逐字逐句的翻译原文并不一定能把作者的想法表述清楚,所以经过再三考虑我决定在保证原意的前提下对表达方法进行一些处理。

最后因为译者水平有限,翻译或理解中如有纰漏还望大家指出。