commonJS
exports和module.exports的区别
- module.exports默认值为{}
- exports是module.exports的引用
- exports默认指向module.exports的内存空间
- require()返回的是module.exports而不是exports
- 若对exports重新赋值, 则断开了exports对module.exports的指向
模块导出方式
// exports
exports.add = (a, b) => a+b
// module.exports
module.exports = {
add: (a,b) => a+b
}
使用require引入模块
const module = require('./module.js')
const add =module.add
commonJS和esModule的区别
- commonJS是被加载的时候运行, esModule是编译的时候运行
- commonJS输出的是值的浅拷贝, esModule是输出值的引用
- commonJS具有缓存, 在第一次被加载时, 会完整运行整个文件并输出一个对象, 拷贝(浅拷贝)在内存中. 下次加载文件时,直接从内存中取值