CommonJs规范,深入了解模块原理

ComminJs规范

在这个规范下,每个.js文件都是一个模块,它们内部各自使用的变量名和函数名都互不冲突,例如,hello.jsmain.js都申明了全局变量var s = 'xxx',但互不影响。

一个模块想要对外暴露变量(函数也是变量),可以用module.exports = variable;,一个模块要引用其他模块暴露的变量,用var ref = require('module_name');就拿到了引用模块的变量。

结论

要在模块中对外输出变量,用:

module.exports = variable;

输出的变量可以是任意对象函数数组等等。

要引入其他模块输出的对象,用:

var foo = require('other_module');

引入的对象具体是什么,取决于引入模块输出的对象。

  1. 如果要输出一个键值对象{},可以利用exports这个已存在的空对象{},并继续在上面添加新的键值;
  2. 如果要输出一个函数或数组,必须直接对module.exports对象赋值。

所以我们可以得出结论

  • 直接对module.exports赋值,可以应对任何情况
module.exports = {
    foo: function () { return 'foo'; }
};

或者:

module.exports = function () { return 'foo'; };

最终,使用module.exports = xxx的方式来输出模块变量,这样,就只需要记忆一种方法。

你可能感兴趣的:(知识区域链)