首先Node.js是2009年诞生的,已经发展了这么多年,其成长与发展速度是有目共睹的。
名字
随着Node.js的发展,网上的报道越来越多,所以其叫法也是五花八门,有的叫Node,也有的叫Nodejs。但是在其官网上,一直将该项目称之为Node或者Node.js。由于Node的语义太多,所以我们将其称之为Node.js。js后缀是点缀该项目的本意。
Node.js不是js应用,而是js的运行环境
刚一听到这个名字,许多人就认为这是一个Javascript应用,其实不然,Node.js是一个Javascript的运行环境。作为前端最重要的语言Javascript,一直都是前端工程师的专利,不过Node.js是一个后端的Javascript运行环境。这就意味着你可以使用Javascript来编写后台代码,然后交给Node.js来解释执行。
简单的命令就是 #node hello.js
Node.js采用了Chrom V8引擎,性能很好,并且提供了很多API。浏览器端的Javascript在运行时会受到很多限制,对客户端系统的操作有限。而Node.js是一个全面的Javascript后台运行时,为Javascript提供了很多其他语言可以实现的功能。
Node.js
Node.js的设计思想中以事件驱动为核心,它提供的绝大多数API都是基于事件的、异步的风格。使用Node.js开发的人员,需要根据自己业务的逻辑来注册相应的回调函数,这些函数的调用都是异步的,这就使得虽然在代码结构中函数看起来是依次注册的,但是他们并不会依赖自身出现的顺序,而是等待相应的事件去触发它。
事件驱动,异步编程的优势在于,它充分的利用的系统资源,执行代码无须阻塞等待某一代码或某一操作执行完成,有限的资源可以用于执行其他的任务。这样设计是非常有利于后端的网络服务开发,Node.js的目标也在于此。在服务器中,对并发的请求处理一直是个大问题,但是使用Node.js这种事件触发,异步编程可以很大的改善开发人员的效率,性能也会改善。
```
var http = require(‘http‘); http.createServer(function (req, res) { res.writeHead(200, {‘Content-Type‘: ‘text/plain‘}); res.end(‘Hello World\n‘); }).listen(80, "127.0.0.1");
```
这是一个在本地搭建服务器的例子,从这个例子可以看出:
- Node.js的网络编程比较便利,提供的模块(在这里是http)开放了容易上手的API接口,短短几行代码就可以构建服务器。
- 体现了事件驱动、异步编程,在createServer函数的参数中指定了一个回调函数(采用Javascript的匿名函数实现),当有http请求发送过来时,Node.js就会调用该回调函数来处理请求并响应。
Node.js的优点
上边提到的事件触发,异步编程就算是Node.js的特点。
Node.js的另一个特点是:它所支持的语言为Javascript。
- Javascript作为前端工程师的主力语言,有着很强的号召力。并且web技术的高速发展,使前端的重要性增加,大多数人表示因为习惯了Javascript,所以使用Node.js。
- Javascript的匿名函数与闭包函数很适合Node.js事件驱动,异步编程。
- javascript在动态语言中性能很好
参考文献http://www.infoq.com/cn/articles/what-is-nodejs