exports,module.exports ,export,export default之间的区别

262 阅读1分钟

这些命名很类似的东西 很容易让人迷惑,但是理解清除之后也是容易区分的, exports 和 module.exports是CommonJS的东西 而export 和 export default 是es6定制的规范 其实module是一个对象 如图

而 exports就是module的一个属性 而exports相当于 指向module.exports的一个变量
可以看出 这两个其实就是相等的 相当于 var exports =module.exports

所以在使用exports的时候 不能 exports=变量 这种方式去进行
只能exports.a=变量 不然会改变exports的指向 然后exports导出的对象就会无效
然后require就很简单了 假如说是 let obj =require('./index.js') 就是从index.js这个文件里面的module对象的exports属性里面的数据读取出来 如果没有就会报错 还有require出来的是module里面的副本,相当于说是深拷贝,module里面的数据变化是不会影响到导出来的数据的

但是export 不一样 他导出的是值的引用 在外面改变里面的值 会改变里面的值

export 就是ES6的语法规范了 用法很简单 export {} 导出之后 在需要的地方import就行了 用法简单 可以百度 这个export是一个预设的方法,不能打印出来,不是一个对象

补充 CommonJs的导入 require是在运行时候才能获取到导入的数据 import是在编译的时候就能获取到导入的模块 效率更高 更快 静态化