Node中的JavaScript

global 对象

  • 在浏览器中,全局对象指的是window对象,在window对象上定义的任何内容都可以被全局访问到;
  • 在Node中,有两个类似但却各自代表不同含义的对象;
    global 对象:和window一样,任何global对象上的属性都可以被全局访问到;
    process对象:所有全局执行上下文中的内容都在process对象中。

模块系统

  • 在浏览器中,直接通过script标签引入第三方库,会导致对全局命名空间的污染命名冲突问题
  • 在Node中,通过require、export、module三个关键字引入了模块系统;
  • 在Node中,通过require关键字加载模块,加载模块查找顺序:核心模块>按路径加载模块>node_modules向上递归;
  • require关键字按路径加载模块时允许加载模块文件不带后缀名,会依次查找.js、.json、.node为后缀名的文件;
  • export = module.export = {} 意思是export关键字是对module.export的引用,默认情况下是一个对象,但可以对其进行重写,将类的构造器函数暴露出来:
# person.js 
module.export = Person;

function Person(name) {
    this.name = name;
}

Person.prototype.talk = function() {
    console.log(‘我的名字是’ + this.name);
}
# index.js
var Person = require(‘./person’);
var john = new Person(‘john’);
john.talk();

这样,在index文件中,不再导入的是对象,而是一个函数!

事件

  • Node.js最重要的概念之一就是事件驱动,最基础的API是EventEmitter;
  • EventEmitter API定义了on、emit、once以及removeListener方法,以process.EventEmitter形式暴露出来;
# index.js
var EventEmitter = require(‘event’).EventEmitter;
var a = new EventEmitter();

a.on(‘event’, function() {
    console.log(‘event called’);
});

a.emit(‘event’);

buffer

  • Node.js中增加了对二进制数据的处理,buffer是一个表示固定内存分配的全局对象,可以方便的对数据进行编码转换。

你可能感兴趣的:(Node中的JavaScript)