export/import
模块功能主要由两个命令构成:export和import。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用export关键字输出该变量。下面是一个 JS 文件,里面使用export命令输出变量。
// profile.js
export var firstName = 'Michael';
export var lastName = 'Jackson';
export var year = 1958;
//另一种方式
var firstName = 'Michael';
var lastName = 'Jackson';
var year = 1958;
export {firstName, lastName, year};
//导出函数
export function multiply(x, y) {
return x * y;
};
// 写法一
export var m = 1;
// 写法二
var m = 1;
export {m};
// 写法三
var n = 1;
export {n as m};
import命令 使用export命令定义了模块的对外接口以后,其他 JS 文件就可以通过import命令加载这个模块。
// main.js
import {firstName, lastName, year} from './profile';
function setName(element) {
element.textContent = firstName + ' ' + lastName;
}
import { lastName as surname } from './profile';
// circle.js
export function area(radius) {
return Math.PI * radius * radius;
}
export function circumference(radius) {
return 2 * Math.PI * radius;
}
//main.js
import { area, circumference } from './circle';
console.log('圆面积:' + area(4));
console.log('圆周长:' + circumference(14));
export default 命令
使用import命令的时候,用户需要知道所要加载的变量名或函数名,否则无法加载。但是,用户肯定希望快速上手,未必愿意阅读文档,去了解模块有哪些属性和方法。为了给用户提供方便,让他们不用阅读文档就能加载模块,就要用到export default命令,为模块指定默认输出。
// export-default.js 一个模块文件export-default.js,它的默认输出是一个函数
export default function () {
console.log('foo');
}
// import-default.js 可以用任意名称指向export-default.js输出的方法,这时就不需要知道原模块输出的函数名。
import customName from './export-default';
customName(); // 'foo'
export 与 import 的复合写法
export {foo,bar} from 'my_module'
//等同于
import { foo, bar } from 'my_module';
export { foo, boo};
// 接口改名
export { foo as myFoo } from 'my_module';
// 整体输出
export * from 'my_module';
export { default } from 'foo';
export { es6 as default } from './someModule';