CommonJS标准 每一个模块都由一个上下文将该模块与其余模块隔离 标准的回调模式: (CPS Continuation-passing style):后继传递风格 异步编程风格是一种程序的流程控制权之后继的形式被显式的传递的编程风格。 按后继传递风格编写的函数以一个显式的"后继"做为额外的参数,"后继"实际 上是一个函数,当CPS函数计算出返回值时,它就调用后继函数,并将 CPS 函数的返回值做为参数。这种模式可以很好的处理函数执行结束后须要通知客户端的状况。 var fs = require('fs'); fs.readFile('/etc/passwd',function(err,fileContent){ if(err){ throw err; } console.log("fileContent " + fileContent.toString()); }); //回调函数第一个参数是一个错误对象,若是有错误发生,这个参数就是Error的一个实例,这就是比Node中的应用CPS编程的通常模式。 理解事件发射器模式: 事件发射器:能够发射事件的对象。 事件监听器:绑定到事件发射器上的代码,负责监听特定类型的事件。 理解事件类型: 发射的事件具备必定的类型,类型用一个字符串表示如"data","end","on" 等,他们都是由事件发射器定义的任意字符串。当你使用到API时 应该会有对应的文档记录他可以发射的事件类型。 一旦有事件发生,事件发射器就会调用相应的事件监听器,并将相关数据做为参数传递给事件监听器。 虽然事件发生器时服务任意类型事件的通用接口,但在Node的实现中有一个特例即error事件,Node中大多数事件发射器实如今程序发生错误时都会发射"error"事件,因此都要监听这个错误事件,防止向上抛出异常。 应用事件发射器API: 任何实现了事件发射器模式的对象(例如:TCP http等)都实现了: 1:addListener 和on ->为指定的事件添加事件监听器 2:once->为指定的事件添加只会调用一次的事件监听器 3:removeEventListener ->删除绑定到指定事件上的某个指定的事件监听器。 4:removeAllEventListener ->删除绑定到指定事件上的所有的事件监听器。 容许绑定多个事件监听器。根据事件类型,事件发射器负责按照事件所绑定的监听器的注册顺序依次调用事件监听器。这就意味着: 1:某个事件监听器也许并不会在事件发射以后就当即被调用,也许在它以前还有别的事件监听器被调用。 2:异常被抛出到堆栈并不正常,他一般时有代码中的错误引发的。 建立事件发射器: 1:从Node事件发射器继承 var util = require('util'); var eventEmitter = require('events').EventEmitter; var myClass = function(){} util.inherits(myClass,eventEmitter);//util.inherits创建了一条原型链,使myClass类实例可以使用EventEmitter的原型方法