创建 hello-world.js 模块
Node 提供 module.exports
接口,以将函数和变量公开给其他文件。最简单的方法是只导出一个对象(函数或变量),如第一个示例所示。
你好,world.js
module.exports = function(subject) {
console.log('Hello ' + subject);
};
如果我们不希望整个导出成为单个对象,我们可以将函数和变量导出为 exports
对象的属性。以下三个示例都以略微不同的方式展示了这一点:
- hello-venus.js:函数定义单独完成,然后作为
module.exports
的属性添加 - hello-jupiter.js:函数定义直接作为
module.exports
的属性值 - hello-mars.js:函数定义直接声明为
exports
的属性,exports
是module.exports
的简短版本
你好,venus.js
function hello(subject) {
console.log('Venus says Hello ' + subject);
}
module.exports = {
hello: hello
};
你好,jupiter.js
module.exports = {
hello: function(subject) {
console.log('Jupiter says hello ' + subject);
},
bye: function(subject) {
console.log('Jupiter says goodbye ' + subject);
}
};
你好,mars.js
exports.hello = function(subject) {
console.log('Mars says Hello ' + subject);
};
加载具有目录名称的模块
我们有一个名为 hello
的目录,其中包含以下文件:
index.js
// hello/index.js
module.exports = function(){
console.log('Hej');
};
main.js
// hello/main.js
// We can include the other files we've defined by using the `require()` method
var hw = require('./hello-world.js'),
hm = require('./hello-mars.js'),
hv = require('./hello-venus.js'),
hj = require('./hello-jupiter.js'),
hu = require('./index.js');
// Because we assigned our function to the entire `module.exports` object, we
// can use it directly
hw('World!'); // outputs "Hello World!"
// In this case, we assigned our function to the `hello` property of exports, so we must
// use that here too
hm.hello('Solar System!'); // outputs "Mars says Hello Solar System!"
// The result of assigning module.exports at once is the same as in hello-world.js
hv.hello('Milky Way!'); // outputs "Venus says Hello Milky Way!"
hj.hello('Universe!'); // outputs "Jupiter says hello Universe!"
hj.bye('Universe!'); // outputs "Jupiter says goodbye Universe!"
hu(); //output 'hej'