今天学习reudx-saga在saga的文件中遇到了一个export default mysaga,但是在store的index引用的时候却用了另一个名字,真的是一脸懵逼,后来问了师傅得知,export default导出的文件,在另一个文件中使用的时候可以随便命名😢,真tm的想骂人了唉,还是自己学艺不精,所以即一些es6的import和export的知识以备不时之需吧。(例子🌰摘自阮一峰es6标准入门第三版)
模块功能主要由两个命令构成:export和import。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。
export default 命令
为了给用户提供方便,让他们不用阅读文档就能加载模块,就要用到export default命令,为模块指定默认输出。
// export-default.js
export default function () {
console.log('foo');
}
上面代码是一个模块文件export-default.js,它的默认输出是一个函数。
其他模块加载该模块时,import命令可以为该匿名函数指定任意名字。
// import-default.js
import customName from './export-default';
customName(); // 'foo'
上面代码的import命令,可以用任意名称指向export-default.js输出的方法,这时就不需要知道原模块输出的函数名。需要注意的是,这时import命令后面,不使用大括号。
export default命令用在非匿名函数前,也是可以的。
// export-default.js
export default function foo() {
console.log('foo');
}
// 或者写成
function foo() {
console.log('foo');
}
export default foo;
上面代码中,foo函数的函数名foo,在模块外部是无效的。加载的时候,视同匿名函数加载。
本质上,export default就是输出一个叫做default的变量或方法,然后系统允许你为它取任意名字。
总结:引用通过exprort default 导出的模块,可以不加"{ }",通过export const 导出的,在引入时必须加{ }.
网友评论