ES6模块功能
- 模块功能主要由两个命令构成:
export
和import
。 export
命令用于规定模块外的其他模块可以访问的接口,import
命令用于输入其他模块提供的功能。
export
export var firstName = 'Michael';
- 每个个模块就是一个独立的文件。
- 该文件内部的所有变量,外部无法获取。
- 如果你希望外部能够读取模块内部的某个变量,就必须使用
export
关键字输出该变量。 export
命令除了输出变量,还可以输出函数或类(class)export
输出的变量就是本来的名字,但是可以使用as
关键字重命名。
import
import { myMethod } from 'util';
(1)按需加载。
import()
可以在需要的时候,再加载某个模块。
button.addEventListener('click', event => {
import('./dialogBox.js')
.then(dialogBox => {
dialogBox.open();
})
.catch(error => {
/* Error handling */
})
});
上面代码中,import()
方法放在click
事件的监听函数之中,只有用户点击了按钮,才会加载这个模块。
(2)条件加载
import()
可以放在if
代码块,根据不同的情况,加载不同的模块。
if (condition) {
import('moduleA').then(...);
} else {
import('moduleB').then(...);
}
上面代码中,如果满足条件,就加载模块 A,否则加载模块 B。
(3)动态的模块路径
import()
允许模块路径动态生成。
import(f())
.then(...);
上面代码中,根据函数f
的返回结果,加载不同的模块。