Node.js中,一个Javascript文件中定义的变量、函数、都值在这个文件内部有效,当需要从模块外部引用这些变量、函数时,必须使用exports对象进行暴露,使用者要用require()命令引用这个JS文件。
一个JS文件,可以向外exports无数个变量、函数。但是require的时候的时候,仅仅需要require这个JS文件一次。使用它暴露的变量、函数的时候,用点语法即可。所以,无形之中,增加了一个顶层命名空间。
被引用文件foo.js
var hehe= "呵呵";
var xixi = "嘻嘻";
function showInfo() {
console.log(xixi);
}
exports.hehe =hehe;
exports.xixi =xixi;
exports.showInfo = showInfo;
使用者文件04.js
var foo = require("./test2/foo.js");
console.log(foo.hehe);
console.log(foo.xixi);
foo.showInfo();
运行04.js 结果如下图:
另外一种,可以将一个JavaScript文件中,描述为一个类、用
module.export =构造函数名;
的方式向外暴露一个类。
被引用文件 People.js
function People(name,age,sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
People.prototype.sayHello = function () {
console.log(this.name + this.age +this.sex);
};
//此时,People就被视为构造函数,可以用new来实例化了
module.exports = People;
使用者05.js
var People = require("./test2/People.js");
var xiaoming = new People("小明","男","12");
xiaoming.sayHello();
运行05.js
总结:
1) 被引用的js文件中,提供了变量,函数,供别人使用,就用exports.变量名 = 变量名; exports.函数名=函数名;
2)被引用的js文件,描述一个类。就用module.exports = 类名;