node.js 小记

  写此目的是为了记录自己看《了不起的Node.js》感觉重要的地方。

1. 事件轮询

        从本质上来说,Node会先注册事件,随后不停的询问内核这些事件是否已经分发。当事件分发时,对应的回调函数就会被触发,然后继续执行下去。如果没有事件触发,则继续执行其他代码,直到有新事件时,再去执行对应的回调函数。

Node并发实现也采用了事件轮询。


2.模块系统

      绝对模块:是指Node通过在其内部node_modules查找到的模块,或者Node内置的如fs这样的模块。
      相对模块:将require指向一个相对工作目录中的JavaScript文件。 需要将require参上前加上  ./  例如:require('./module_a');

3 事件

     Node暴露了Event EmitterAPI,该API上定义了on,emit以及removeListener方法。它以process.EventEmitter形式暴露出来:
   eventemitter/index.js
var EventEmitter = require('events').EventEmitter;
        var a = new EventEmitter;
        a.on('event', function(){
            console.log('event called');
          });

         a.emit('event');

    Node内部在使用,你也可以很容易的将其添加到自己的类中:
var EventEmitter = process.EventEmitter;
var MyClass = function(){};
MyClass.prototype.__proto__ = EventEmitter.prototype;

这样,所有MyClass的实例都具备了事件功能:
var a = new MyClass;
a.on('do', function() {
// do something
console.log('event called');
});

a.emit('do');

事件是Node非阻塞设计的重要体现。Node通常不会直接返回数据(以为这样可能会在等待某个资源的时候发生线程阻塞),而是采用分发事件来传递数据的方式。

4 buffer
     buffer是一个表示固定内存分配的全局对象,它就好比是一个由八位字节元素组成的数组,可以有效的在JavaScript中表示二进制数据。
      该功能一部分作用就是可以对数据进行编码转换。


5 __dirname
     使用__dirname来获取执行文件时该文件在文件系统中所在的目录。

              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值