require 的特性
a.module 被加载的时候执行,加载后缓存
b.一旦出现某个模块被循环加载,就只输出已执行的部分,未知性的部分不会执行(见如下代码)
// modA.js 代码
module.exports.test = 'A';
const modB = require('./modB')
console.log("modA:", modB.test)
module.exports.test = 'AA'
// modB.js 代码
module.exports.test = 'B'
const modA = require('./modA')
console.log("modB:", modA.test);
module.exports.test = 'BB'
// main.js 调用代码
const modA = require("./modA")
const modB = require("./modB")
console.log(modA.test)
console.log(modB.test)
module.exports与exports的区别
exports是module.exports的缩写,一般情况都是一样的,但是有一种情况需要注意,就是改变module.exprots的指向
// 错误代码
exports = {
a: 1,
b: 2,
test: 100
}
// 正确代码 (修改module.exports指向的,module不可以省略)
module.exports = {
a: 1,
b: 2,
test: 100
}