JS模块化之commonJS

参考:前端模块化

commonJS 规范规定,每个模块内部,module 变量代表当前模块。这个变量是一个对象,它的 exports 属性(即 module.exports )是对外的接口。加载某个模块,其实是加载该模块的 module.exports 属性。

// 定义模块math.js

var basicNum = 0;
function add(a, b) {
  return a + b;
}

// 定义当前模块对外输出的接口
module.exports = { // 在这里协商需要向外暴露的函数、变量
  add: add,
  basicNum: basicNum
};

// 用require加载模块

var math = require('./math');
console.log(math.add(2, 5));  // 7

commonJS用同步的方式加载模块,即脚本代码在 require 的时候,就会全部执行。一旦出现某个模块被”循环加载”,就只输出已经执行的部分,还未执行的部分不会输出。

exports 和 module.exports 的使用

如果要对外暴露属性或方法,就用 exports 就行,要暴露对象(类似class,包含了很多属性和方法),就用 module.exports。

你可能感兴趣的:(JavaScript)