1、export、import命令
模块功能主要由两个命令构成:export和import。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。
2、整体加载
下面是一个circle.js文件,它输出两个方法area和circumference。
export function area(radius) { return Math.PI * radius * radius;}export function circumference(radius) { return 2 * Math.PI * radius;}加载模块
// main.jsimport { area, circumference } from './circle';console.log('圆面积:' + area(4));console.log('圆周长:' + circumference(14));上面写法是逐一指定要加载的方法,整体加载的写法如下。
import * as circle from './circle';console.log('圆面积:' + circle.area(4));console.log('圆周长:' + circle.circumference(14));注意,模块整体加载所在的那个对象(上例是circle),应该是可以静态分析的,所以不允许运行时改变。下面的写法都是不允许的。
import * as circle from './circle';// 下面两行都是不允许的circle.foo = 'hello';circle.area = function () {};3、export default命令默认输出
export default命令用于指定模块的默认输出。显然,一个模块只能有一个默认输出,因此export default命令只能使用一次。所以,import命令后面才不用加大括号,因为只可能唯一对应export default命令。
4、运行时加载模块
const path = './' + fileName;const myModual = require(path);//import()可以放在if代码块,根据不同的情况,加载不同的模块。if (condition) { import('moduleA').then(...);} else { import('moduleB').then(...);}