标题：node.js
简介
Node.js是一个可以快速构建网络服务及应用的平台[1]。该平台的构建是基于Chrome's JavaScript runtime，也就是说，实际上它是对GoogleV8引擎（应用于Google Chrome浏览器)进行了封装。[1]
V8引 擎执行Javascript的速度非常快，性能非常好。Node对一些特殊用例进行了优化，提供了替代的API，使得V8在非浏览器环境下运行得更好。[2]
例如，在服务器环境中，处理二进制数据通常是必不可少的，但Javascript对此支持不足，因此，V8.Node增加了Buffer类，方便并且高效地 处理二进制数据。因此，Node不仅仅简单的使用了V8,还对其进行了优化，使其在各环境下更加给力。[3]
（概述内容来源：[4]图片来源：[2]）
特性
V8引擎本身使用了一些最新的编译技术。这使得用Javascript这类脚本语言编写出来的代码与用C这类高级语言写出来的代码性能相差无几，却节省了开发成本。对性能的苛求是Node的一个关键因素。 Javascript是一个事件驱动语言，Node利用了这个优点，编写出可扩展性高的服务器。Node采用了一个称为“事件循环(event loop）”的架构，使得编写可扩展性高的服务器变得既容易又安全。提高服务器性能的技巧有多种多样。Node选择了一种既能提高性能，又能减低开发复杂度的架构。这是一个非常重要的特性。并发编程通常很复杂且布满地雷。Node绕过了这些，但仍提供很好的性能。
Node采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。向文件系统发送一个请求时，无需等待硬盘（寻址并检索文件），硬盘准备好的时候非阻塞接口会通知Node。该模型以可扩展的方式简化了对慢资源的访问， 直观，易懂。尤其是对于熟悉onmouseover、onclick等DOM事件的用户，更有一种似曾相识的感觉。
虽然让Javascript运行于服务器端不是Node的独特之处，但却是其一强大功能。不得不承认，浏览器环境限制了我们选择编程语言的自由。任何服务器与日益复杂的浏览器客户端应用程序间共享代码的愿望只能通过Javascript来实现。虽然还存在其他一些支持Javascript在服务器端 运行的平台，但因为上述特性，Node发展迅猛，成为事实上的平台。
在Node启动的很短时间内，社区就已经贡献了大量的扩展库（模块）。其中很多是连接数据库或是其他软件的驱动，但还有很多是凭他们的实力制作出来的非常有用的软件。
最后，不得不提到的是Node社区。虽然Node项目还非常年轻，但很少看到对一个项目如此狂热的社区。不管是新手，还是专家，大家都围绕着项目，使用并贡献自己的能力，致力于打造一个探索、支持、分享、听取建议的乐土。[5]
Node.js的优点
nodejs作为一个新兴的后台语言，有很多吸引人的地方：
RESTful API
单线程
Node.js可以在不新增额外线程的情况下，依然可以对任务进行并行处理 —— Node.js是单线程的。它通过事件轮询（event loop）来实现并行操作，对此，我们应该要充分利用这一点 —— 尽可能的避免阻塞操作，取而代之，多使用非阻塞操作。
非阻塞IO
V8虚拟机
事件驱动
模块
Node.js使用Module模块去划分不同的功能，以简化应用的开发。Modules模块有点象C语言中的类库。每一个Node.js的类库都包含了十分丰富的各类函数，比如http模块就包含了和http功能相关的很多函数，可以帮助开发者很容易地对比如http,tcp/udp等进行操作，还可以很容易的创建http和tcp/udp的服务器。
要在程序中使用模块是十分方便的，只需要如下：
在这里，引入了http类库，并且对http类库的引用存放在http变量中了。这个时候，node.js会在我们应用中搜索是否存在node_modules的目录，并且搜索这个目录中是否存在http的模块。如果node.js找不到这个目录，则会到全局模块缓存中去寻找，用户可以通过相对或者绝对路径，制定模块的位置，比如：
var myModule = require('./myModule.js');
模块中包含了很多功能代码片断，在模块中的代码大部分都是私有的，意思是在模块中定义的函数方法和变量，都只能在同一个模块中被调用。当然，可以将某些方法和变量暴露到模块外，这个时候可以使用export是对象去实现。[3]
安装
Node.js的安装
下面介绍下Node.js的安装，首先在nodejs &nbsp;org的网站上根据操作系统下载相关的安装包，对于ubuntu[6](linux)下的安装，可以如下进行：
sudo apt-get update
sudo apt-get install node
或者：
sudo aptitude update
sudo aptitude install node
Node.js就会在sid库，现在可以将它们增加到sources来源列表中
sudo echo deb http://ftp.us.debian org/debian/ sid main > /etc/apt/sources.list.d/sid.list
但要注意的是，在完成安装后，需要移走/etc/apt/sources.list.d/sid.list。[3]
版本发布
2012年08月23日，Node.js 0.8.8 发布（稳定版）。[7]　
改进处：V8:升级到3 11 10 19，依据npm:升级到1 1 59，windows:修复未初始化内存访问在紫外线更新时间()(伯特Belder)，unix,windows:修复内存腐败在fs民意调查。c(本Noordhuis)，unix:修复整数溢出在uv_hrtime(蒂姆·圣)，sunos:修复紫外线cpu信息()在x86_64(本Noordhuis)，tls:更新默认密码列表(本Noordhuis)，unix:修复llvm和年长的gcc复制符号警告(伯特Belder)，fs:修复后使用免费在stat观察者(本Noordhuis)，构建:修复使用手动编译的gcc在OS X(Nathan Rajlich)，windows:使连接再工作(伯特Belder)。[7]　
2012年09月12日，Node.js 0.8.9 发布。[8]
2012年08月29日，Node.js 0.9.1 开发版发布。　
改进处：缓冲区:添加Buffer.isEncoding(enc)来测试有效的编码值(艾萨克)，提高UV_ECANCELED过早关闭。(Noordhuis)，删除c阿瑞斯从libuv,搬到一个顶级节点依赖(Belder)，ref / unref所有HandleWraps、计时器、服务器和套接字，插件:删除节点waf,取代节点诈骗(本Noordhuis)，子进程:发出错误在exec失败(本Noordhuis)，集群:不要使用内部服务器API(Andreas)，常量:添加用O_DIRECT(Babrou)，密码:添加同步接口来crypto.pbkdf2()(本Noordhuis)，达尔文:模仿fdatasync()(费多尔Indutny)，dgram:使bind()总是异步(本Noordhuis)，事件:使发射极听众()无副作用(艾萨克,乔Andaverde)，fs:扔在早期无效的编码args(艾萨克)，fs:修复命名的截断/ ftruncate函数(艾萨克)，linux:改善cpuinfo可以知道解析器在臂和MIPS(本Noordhuis)，节点:不要扫描附加“init”符号(Noordhuis)，windows:做出积极和关闭处理国家独立，windows:报告产生错误的出口回调(Belder)windows:信号处理支持与紫外信号t(Belder)。[9]
2012年09月18日 ，Node.js 0.9.2 发布（非稳定版）。[10]
2013年1月10日现在[1]
稳定版 Ver0.8.17（2013年1月10日发布）
非稳定版 Ver0.9.5（2012年12月30日发布）
2013年3月11日，Node.JS v0.10.0 稳定版发布[11]