1、⼀个⽂件是⼀个模块

变量、函数、类都是私有的

2、每个模块内部,module代表当前模块

module.exports 是对外的接⼝。加载某个模块, 其实是加载该模块的module.exports
注意 module.exports 与直接使⽤ exports的差异

3、require⽅法⽤于加载模块

注意加载的模块路径写法差异

4、导出与引用

  1. //a.js
  2. let num = 1
  3. const add = () => ++num
  4. module.exports.num = num //导出这个变量
  5. module.exports.add = add //导出这个函数
  1. //b.js
  2. let obj = require('./a.js') //引入
  3. console.log(obj.num)
  4. console.log(obj.add())
  5. console.log(obj.add())
  1. // c.js
  2. //exports = module.exports
  3. function sum() {
  4. return [...arguments].reduce((v1, v2) => v1 + v2)
  5. }
  6. //exports = sum 错误
  7. //exports.sum = sum ok
  8. module.exports = sum
  1. //d.js
  2. const sum = require('./c')
  3. console.log(sum(3, 4))
  4. console.log(sum(3, 4, 5))