全局对象:
- global:永远使用var 定义变量以避免引入全局变量;
- process:所有全局执行上下文的内容都在process对象中;
模块和包:
- 模块:一个Node.js 文件就是一个模块,这个文件可能是 JavaScript 代码、JSON 或者编译过的 C/C++ 扩展。Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。
- 包:包是在模块基础上更深一步的抽象,Node.js 的包类似于 C/C++ 的函数库或者 Java/.Net 的类库。
模块系统:三个全局变量
- require():如果模块不是在node_modules中,那么必须使用相对路径导入;
- exports:可以在这个对象上定义一些属性,以这个对象为模块暴露的API;
- module:exports就是module.exports,可以将exports完全重写,换一个暴露的API;
监听事件:EventEmitter; 对比window.addEventListen;
var EventEmitter = require('events').EventEmitter; //获取引入模块对应的监听方法; var a = new EventEmitter; //根据这个方法新建一个对象; a.on('event',function(){});/a.once('event',function(){}); //在这个对象上监听其相关的事件