NodeJs中的模块系统
绝对模块:Node通过在其内部node_modules查找到或者Node内置的fs这样的模块。比如你安装你一个pug模块,路径就成了./node_modules/pug,这种情况下就可以直接通过名字require这个模块require('pug')
相对模块:将require指向一个想对工作目录中的JavaScript文件。
暴露API
让模块暴露出一个API成为require调用的返回值,要依靠module和exports这两个全局变量
默认情况下,每个模块都会暴露出一个空对象,可以用exports在该对象上添加属性:
module_a.js
exports.name = 'ldl';
exports.data = 'this is some data';
var privateVariable = 6;
exports.getPrivate = function(){
return privateVariable;
};
main.js
var a = require('./module_a');
console.log(a.name);
console.log(a.data);
console.log(a.getPrivate());
//执行情况
PS E:\codes\nodejs\module> node main
ldl
this is some data
6
exports其实就是对module.exports的引用,其在默认情况下是一个对象。你也可以彻底重写module.exports来满足你的需求。
person.js
module.exports = Person;
function Person (name){
this.name = name;
};
Person.prototype.talk = function (){
console.log('my name is',this.name);
}
index.js
var Person = require('./person');
var ldl = new Person('ldl');
ldl.talk();
PS E:\codes\nodejs\module> node index
my name is ldl
以上就是NodeJs中模块系统的简单玩法.