导入
静态 import
静态的 import 用于导入由另一个模块导出的绑定,是初始化加载依赖的最佳选择
无论是否声明了 strict mode,导入的模块都运行在严格模式下
import * as myModule from '/modules/my-module.js';
import {foo, bar} from '/modules/my-module.js';
import {reallyReallyLongModuleExportName as shortName} from '/modules/my-module.js';
import '/modules/my-module.js';
动态 import
用于根据条件导入或按需导入模块,异步导入
只在必要的情况下使用动态导入
像调用函数一样动态导入模块,以这种方式调用返回一个 promise
import('my-module.js').then(module => {
// ...
})
支持 await
let module = await import('module.js')
导出
export
用于从模块中导出实时绑定的函数、对象或原始值,以便其他程序用过 import 使用它们
导出模块都处于严格模式,export 不能使用在嵌入式脚本中
两者不同的导出方式:命名导出和默认导出,一个模块中可定义多个命名导出,但只允许有一个默认导出
// 导出事先定义的特性
export { myFunction,myVariable };
// 导出单个特性(可以导出var,let,
//const,function,class)
export let myVariable = Math.sqrt(2);
export function myFunction() { ... };
使用
import {myFunction,myVariable} from 'my-mudule.js'
默认导出
// 导出事先定义的特性作为默认值
export { myFunction as default };
// 导出单个特性作为默认值
export default function () { ... }
export default class { .. }
// 每个导出都覆盖前一个导出
导出
// module "my-module.js"
export default function cube(x) {
return x * x * x;
}
使用
import cube from './my-module.js';
console.log(cube(3)); // 27