项目中一直会穿插各种模块的引用的和导出,想了想,发现自己对各种导出认识不是很清晰,上网搜了下资料,简单记录下自己的记忆思路
参考:
https://www.jb51.net/article/126843.htm
https://www.cnblogs.com/fayin/p/6831071.html
一、规范区分
可以根据是否加s
即(export / exports)来记忆,这是两种分类规则
有s
的属于CommonJs 规范, 没有s
的属于es6 规范
二、CommonJs
- 记得这么一个等式
var exports = module.exports = {};
其实exports 只是一个变量,为了方便,Node为每个模块提供一个exports变量。
也就是说无论你怎么蹂躏exports,实际上进行导出的还是module.exports
,所以当然你也就不能改变exports 的指向(eg: var exports = “其他值”) - 在node中module.exports 和exports 随你用就对了
三、es6
- default 表示的默认值,一般默认值只有一个
- export 可以导出好多,而export default只能是一个
通过代码来理解,我们 同样导出这么一个函数
const fun1 = function(){
}
const fun2 = function(){
}
export 可以有2种写法
export{
fun1,
fun2
}
//或者
export {fun1};
export {fun2};
而export default 只能有一个
export default{
fun1,
fun2
}
- 此外就是引入的区别
import { fun1, fun2 } from './export'; //导出了 export 方法
import fun from './export'; //导出了 export default
以上!