ES6中export和import一般的用法有两种
- 命名导出(Named exports)
- 默认导出(Default exports)
一、export 命名导出
就是每一个需要导出的数据类型都要有一个name(变量名),统一引入一定要带有{},即便只有一个需要导出的数据类型。这种写法清爽直观,是推荐的写法。
导出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| / profile.js
export let firstName = 'Michael'; export function v2() { return '这是一个函数' }
let firstName = 'Michael' function v2() { return '这是一个函数' } export { firstName, v2 }
|
导入:
1 2 3 4
| / test.vue中
import { firstName, v2 } from './profile.js'
|
1.1、别名引入(Aliasing named imports)
当从不同模块引入的变量名相同的时候
1 2
| import {speak} from './cow.js' import {speak} from './goat.js'
|
这些写法显然会造成混乱
正切应该使用as关键字,将输入的变量重命名。
1 2
| import {speak as cowSpeak} from './cow.js' import {speak as goatSpeak} from './goat.js'
|
可是,当从每个模块需要引入的方法很多的时候,这种写法就显得十分的繁琐、冗长,例如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import { speak as cowSpeak, eat as cowEat, drink as cowDrink } from './cow.js'
import { speak as goatSpeak, eat as goatEat, drink as goatDrink } from './goat.js'
cowSpeak() cowEat() goatSpeak() goatDrink()
|
解决方案就是命名空间引入了
1.2、命名空间引入(Namespace imports)
1 2 3 4 5
| import * as cow from './cow.js' import * as goat from './goat.js'
cow.speak() goat.speak()
|
十分的简洁优雅
1.3、as关键字重命名
通常情况下,export输出的变量就是本来的名字,但是可以使用as关键字重命名。
导出:
1 2 3 4 5 6 7 8 9
| / profile.js
function v1() { ... } function v2() { ... }
export { v1 as streamV1, v2 as streamV2 };
|
导入:
1 2 3 4
| / test.vue中
import { streamV1, streamV2 } from './profile.js'
|
二、export default 默认导出
默认导出就不需要name了,但是一个js文件中只能有一个export default。
导出:
1 2 3 4 5 6
| / export-default.js export default function () { ... }
function foo() { ... } export default foo;
|
导入:
1 2 3 4
| / test.vue
import customName from './export-default'; customName();
|
其实这种导出方式可以看成是命名导出的变异 ,只不过把命名写成了default。
2.1、export default也能导出多个变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| / export-default.js export default{ v2() { return '这是一个函数' }, aa: 6666 }
const v2 = () => { return '这是一个函数' } const aa = 6666 export default{ v2, aa }
# main.js import fn from '.export-default.js' console.log(fn.v2(), fn.aa)
|