日期:2014-05-16  浏览次数:20317 次

Node.js从入门到深入——Node.js的了解

Node.js从入门到深入,为《Node.js从入门到深入》系列文章的博客文章,欢迎交流学习。by——danhuang

Node是什么?

Node是一个Javascript运行环境(runtime)。实际上它是对GoogleV8引擎(应用于Google Chrome浏览器)进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。(摘自百度百科)

      Node.js并非一种语言,而是一个运行环境,其主要是基于GoogleV8引擎进行封装的一个解析器。其目的是可以在服务器端执行和运行Javascript代码,长久以来javascript都是一个基于浏览器的客户端脚本语言,通过将其运行环境抽离出来,就可以在服务器端运行javascript代码,而并非仅仅依赖浏览器解析,从而就可以将其作为服务器端语言,而其异步非阻塞特性,因此其在长连接、多请求的环境下优势非常明显。

      Node.js的编程语言还是基于javascript,因此想深入学习了解Node.js的入门者,还是应该去熟悉的javascript编程语言,同时要对服务端开发有所了解。Node.js提供了一些特殊的API(官网有详细),因此在编写Node.js的时候可以理解为,使用javascript语言,利用Node.js的API进行服务端开发。

Node能带来什么?

       传统的服务器端语言PHP和Java,每个连接产生式一个线程,每个线程大概需要2M的配置内存,因此相对一个8G的服务器主机,也只能承受来自4000个并发用户的请求,当服务器承受不了这么多用户的情况下就需要添加服务器,增加运营成本。

Node 解决这个问题的方法是:更改连接到服务器的方式。每个连接发射一个在 Node 引擎的进程中运行的事件,而不是为每个连接生成一个新的 OS 线程(并为其分配一些配套内存)。Node 声称它绝不会死锁,因为它根本不允许使用锁,它不会直接阻塞 I/O 调用。Node 还宣称,运行它的服务器能支持数万个并发连接。(摘自IBM——Node.js是什么?)

      上一节我们介绍了Node.js拥有异步非阻塞特性。那么如何才能很好的利用这点呢?

利用该特性可以开发这类项目如:

实时在线Game(这部分可以很好的利用HTML5的知识,进行整合开发游戏,比如“大家一起来画画”),黑暗杀人游戏, 实时休闲游戏(扑克、象棋、麻将等);

实时在线聊天室,实时消息推送功能,SNS实时交流等;

实时监控系统(例如:股票、系统运行状态等);

当然不是所有项目都适合使用Node.js来做,毕竟PHP和其他服务器端语言比较成熟,在安全性方面更优于Node.js,当然Node.js也在慢慢的成熟阶段。