导入

import

静态 import

静态的 import 用于导入由另一个模块导出的绑定,是初始化加载依赖的最佳选择
无论是否声明了 strict mode,导入的模块都运行在严格模式下

  1. import * as myModule from '/modules/my-module.js';
  2. import {foo, bar} from '/modules/my-module.js';
  3. import {reallyReallyLongModuleExportName as shortName} from '/modules/my-module.js';
  4. import '/modules/my-module.js';

动态 import

用于根据条件导入或按需导入模块,异步导入
只在必要的情况下使用动态导入
像调用函数一样动态导入模块,以这种方式调用返回一个 promise

  1. import('my-module.js').then(module => {
  2. // ...
  3. })

支持 await

  1. let module = await import('module.js')

导出

export
用于从模块中导出实时绑定的函数、对象或原始值,以便其他程序用过 import 使用它们
导出模块都处于严格模式,export 不能使用在嵌入式脚本中

两者不同的导出方式:命名导出和默认导出,一个模块中可定义多个命名导出,但只允许有一个默认导出

  1. // 导出事先定义的特性
  2. export { myFunctionmyVariable };
  3. // 导出单个特性(可以导出var,let,
  4. //const,function,class)
  5. export let myVariable = Math.sqrt(2);
  6. export function myFunction() { ... };

使用

  1. import {myFunctionmyVariable} from 'my-mudule.js'

默认导出

  1. // 导出事先定义的特性作为默认值
  2. export { myFunction as default };
  3. // 导出单个特性作为默认值
  4. export default function () { ... }
  5. export default class { .. }
  6. // 每个导出都覆盖前一个导出

导出

  1. // module "my-module.js"
  2. export default function cube(x) {
  3. return x * x * x;
  4. }

使用

  1. import cube from './my-module.js';
  2. console.log(cube(3)); // 27