ES6 实现了模块功能,称为浏览器和服务器的通用解决方案.ES6 模块主要包括两个功能:import 与 export.
export 用于对外输出本模块(一个文件可以理解为一个模块)变量的接口;
import 用于在一个模块中加载另一个含有 export 接口的模块.
使用 export 命令定义了模块的对外接口以后,其他 js 文件就可以通过 import 命令加载这个模块(文件).
export
a.js:
var sex="boy";
var echo=function(value){
console.log(value)
}
export {sex,echo}
使用 export 向大括号中添加 sex 和 echo 并输出,就可以将 sex 和 echo 以变量标识符的形式暴露给其他文件而被读取到,不能直接写成 export sex.对外的输出必须是变量接口,而不是输出的字符串.
export 命令除了输出变量,还可以输出函数或者类.
export 语句输出的值,与其对应的值是动态绑定关系,通过该模块的值,可以取到模块内部实时的值.
expoet 命令可以出现在模块的任何位置,只要处于模块顶层就可以.
import
b.js
import {sex,echo} from "./a.js"
console.log(sex) // boy
echo(sex) // boy
import 命令输入的变量都是只读的,因为它的本质是输入接口.也就是说,不允许在加载模块的脚本里面改写接口.
import 具有提升效果,会提升到整个模块的头部,首先执行.
由于 import 是静态执行,所以不能使用表达式和变量,这些只有在运行时才能得到的结果的语法结构.
export default
可以使用 export default
,为模块指定默认输出,这样就不需要知道所要加载模块的变量名.
// export-default.js
export default function () {
console.log('foo');
}
上面的代码的默认输出是一个函数,其他模块加载该模块时,import 命令可以为该匿名函数指定任意名字.
// import-default.js
import customName from './export-default';
customName(); // 'foo'