Node.js应有尽有,但最次要的一点是,它提供了一种在Web阅读器之外运转Javascript的途径。
Javascript普遍使用于网站的前端开发。Node使得这种盛行的编程言语可以在更多环境下运转,甚至是网站的效劳器端。它有几个值得我们关注的特性:
Node是一个Javascript运转环境(runtime)
n。实践上它是对Google
nV8引擎(使用于Google Chrome阅读器)停止了封装。V8引擎执行Javascript的速度十分快,功能十分好。Node对一些特殊用例停止了优化,提供了替代的API,使得V8在非阅读器环境下运转得更好。例如,在效劳器环境中,处置二进制数据通常是必不可少的,但Javascript对此支持缺乏,因而,V8.Node添加了Buffer类,方便并且高效地处置二进制数据。因而,Node不只仅复杂的运用了V8,还对其停止了优化,使其在各环境下愈加给力。
V8引擎自身运用了一些最新的编译技术
n。这使得用Javascript这类初级言语编写出来的代码与用C这类低级言语写出来的代码功能相差无几,却节省了开发本钱。对功能的苛求是Node的一个关键要素。 Javascript是一个事情驱动言语,Node应用了这个优点,编写出可扩展性高的效劳器。Node采用了一个称为“事情循环(event loop)”的架构,使得编写可扩展性高的效劳器变得既容易又平安。进步效劳器功能的技巧有多种多样。Node选择了一种既能进步功能,又能减低开发复杂度的架构。这是一个十分重要的特性。并发编程通常很复杂且布满地雷。Node绕过了这些,但仍提供很好的功能。
Node采用一系列“非阻塞”库来支持事情循环的方式
n。实质上就是为文件零碎、数据库之类的资源提供接口。当你向文件零碎发送一个恳求时,无需等候硬盘(寻址并检索文件),硬盘预备好的时分非阻塞接口会告诉Node。该模型以可扩展的方式简化了对慢资源的拜访,直观,易懂。尤其是关于熟习onmouseover、onclick等DOM事情的用户,更有一种素昧平生的觉得。
虽然让Javascript运转于效劳器端不是Node的共同之处,但却是其一弱小功用。不得不供认,阅读器环境限制了我们选择编程言语的自在。任何效劳器与日益复杂的阅读器客户端使用顺序间共享代码的愿望只能经过Javascript来完成。虽然还存在其他一些支持Javascript在效劳器端运转的平台,但由于上述特性,Node开展迅猛,成为现实上的平台。
在Node启动的很短工夫内,社区就曾经奉献了少量的扩展库(模块)。其中很多是衔接数据库或是其他软件的驱动,但还有很多是凭他们的实力制造出来的十分有用的软件。
最初,不得不提到的是Node社区。虽然Node项目还十分年经,但很少看到对一个项目如此狂热的社区。不论是老手,还是专家,大家都围绕着项目,运用并奉献自已的才能,努力于打造一个探究、支持、分享、听取建议的乐土。
(编者按:作为一个码农,Wilson总是乐于关注业界的新颖事。最近
n技术圈内的几位童鞋在讨论Node.js,于是跟着理解了一下,发现这个东西还是蛮值得关注的,于是译了本文与大家分享,原文来自技术布道者
nTom Hughes-Croucher正在编写的关于Node.js开发指南的书
n这里下载)的第一章,原文标题为。另外,最近,
nNode.js还取得知名云计算效劳提供商Joyent的赞助, 其项目担任人Ryan Dahl也加盟了Joyent,估计Node.js将在企业级使用中取得更多时机。)