创建 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 的属性,exportsmodule.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'