例子
module.js
const a = {};
const b = {};
module.exports = a;
main.js
const a = require('./module.js');
exports和module.exports其实就是两个指针。exports和module.exports默认指向同一个对象{}。require返回的是module.exports指向的内容。exports = a;这个代码相当于exports指向了一个新的东西,和module.exports指向的东西不一样了。module.exports = a;就是module.exports指向了a,那么require就会 返回a。module.exports = {a, b};就是module.exports指向了新的对象,这个对象里面 包含a和b两个属性,那么require就会返回这个新的对象。- 那
exports看上去好像没什么用啊??是的,确实没用,估计是为了可以少打几个 字母吧。 - 建议直接把
exports忘记了,只使用module.exports。
例子 2
module.js
const a = {};
const b = {};
module.exports = {
a,
b,
};
main.js
const m = require('./module.js');
const {a, b} = require('./module.js');
const {a} = require('./module.js');
const {b} = require('./module.js');
const m = require('./module.js'); 是获取到 module.exports 返回的新的对象,
这个新的对象里面包含 a 和 b 两个属性,并把返回的对象保存到变量 m。
const {a, b} = require('./module.js'); 是把 require 返回的对象解构了,分别
取出其中的 a 和 b 属性所对应的值,并分别保存到 a 和 b 两个变量。
const {a} = require('./module.js'); 是把 require 返回的对象解构了,只
取出其中的 a 属性所对应的值,并保存到 a 变量。
const {b} = require('./module.js'); 是把 require 返回的对象解构了,只
取出其中的 b 属性所对应的值,并保存到 b 变量。