Node 应用由模块组成,采用 CommonJS 模块规范
每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。
每个模块内部,都有一个module对象,代表当前模块。它有以下属性。
所有缓存的模块保存在require.cache之中,如果想删除模块的缓存,可以像下面这样写。
// 删除指定模块的缓存
delete require.cache[moduleName];
// 删除所有模块的缓存
Object.keys(require.cache).forEach(function(key) {
delete require.cache[key];
});
以下是一个特殊的例子,为 Model 注册事件
//model_export.js
var EventEmitter = require('events').EventEmitter;
module.exports = new EventEmitter();// 注册事件
setTimeout(function() {
module.exports.emit('ready'); // 触发ready事件
}, 1000);
//exports.a = "a"; //这种情况下,只能使用model.exports.a才可以向外部输出接口,而使用默认的 exports.a 是不可以的。
module.exports.a = "a";
//console.log(module);
//model_test.js
var a = require('./model_export');
a.on('ready', function() {
console.log('module a is ready'); //module a is ready
});
console.log(a.a); //a