node.js 是啥
Node.js 不是一种独立的语言,与 PHP、 Python、 Perl、 Ruby 的“既是语言也是平台”
不同。 Node.js 也不是一个 JavaScript 框架,不同于 CakePHP、 Django、 Rails。 Node.js 更不
是浏览器端的库,不能与 jQuery、 ExtJS 相提并论。Node.js 是一个让 JavaScript 运行在服务
端的开发平台,它让 JavaScript 成为脚本语言世界的一等公民,在服务端堪与 PHP、 Python、
Perl、 Ruby 平起平坐。
node.js与javascript
传统意义上, JavaScript 是由 ECMAScript、文档对象模型(DOM)和浏览器对象模型(BOM)组成的,而 Mozilla 则指出 JavaScript 由
Core JavaScript 和 Client JavaScript 组成。
我们可以认为,Node.js 中所谓的 JavaScript 只是 Core JavaScript,或者说是 ECMAScript 的一个
实现,不包含 DOM、 BOM 或者 Client JavaScript。 这是因为 Node.js 不运行在浏览器中,所
以不需要使用浏览器中的许多特性。
Node.js 是一个让 JavaScript 运行在浏览器之外的平台。它实现了诸如文件系统、模块、包、操作系统 API、网络通信等 Core JavaScript 没有或者不完善的功能。
node.js能做什么
- 具有复杂逻辑的网站;
- 基于社交网络的大规模 Web 应用;
- Web Socket 服务器;
- TCP/UDP 套接字应用程序;
- 命令行工具;
- 交互式终端程序;
- 带有图形用户界面的本地应用程序;
- 单元测试工具;
- 客户端 JavaScript 编译器。
异步式 I/O 与事件驱动
Node.js 的异步机制是基于事件的,所有的磁盘 I/O、网络通信、数据库查询都以非阻塞的方式请求,返回的结果由事件循环来处理
db.query('SELECT * from some_table', function(res) {
res.output();
});
进程在执行到db.query的时候,不会等待结果返回,而是直接继续执行后面的语句,直到进入事件循环。数据库查询结果返回时,会将事件发送到事件队列,等到线程进入事件循环以后,才会调之前的回调函数继续执行后面的逻辑。
node.js的性能
Node.js 用异步式 I/O 和事件驱动代替多线程,带来了可观的性能提升。