一,export命令用于规定模块的对外接口
变量:
函数
import 命令
import命令加载这个模块
引入变量的方法
import命令接受一对大括号,里面指定要从其他模块导入的变量名。大括号里面的变量名,必须与被导入模块(profile.js)对外接口的名称相同。
如果想为输入的变量重新取一个名字,import命令要使用as关键字,将输入的变量重命名。
import命令只可以引入不可以修改,如果修改就会报错如下图:
定义的值不可以随意的修改,但是属性可以随意的修改
建议凡是输入的变量,都当作完全只读,轻易不要改变它的属性。
import命令具有提升效果,会提升到整个模块的头部,首先执行。
foo();
import{foo}from'my_module';
上面的代码不会报错,因为import的执行早于foo的调用。这种行为的本质是,import命令是编译阶段执行的,在代码运行之前。
由于import是静态执行,所以不能使用表达式和变量,这些只有在运行时才能得到结果的语法结构。
模块的整体加载
export default 命令
用export default定义一个默认的函数
引用的时候用import来定义一个任意的值,但是需要指定路径。
这种用法是用于在定义的时候没有指定名字的时候应用。
上面代码中,foo函数的函数名foo,在模块外部是无效的。加载的时候,视同匿名函数加载。
上面代码的两组写法,第一组是使用export default时,对应的import语句不需要使用大括号;第二组是不使用export default时,对应的import语句需要使用大括号。
因为export default是用于指定默认输出的,一个模块只可以默认输出一次,所以只可以使用一次,在import命令后边才不用加{}
export default就是输出一个叫做default的变量或方法
同样地,因为export default命令的本质是将后面的值,赋给default变量,所以可以直接将一个值写在export default之后。
正是因为export default命令其实只是输出一个叫做default的变量,所以它后面不能跟变量声明语句
export default也可以用来输出类。
本篇文章来自于es6的读书笔记:http://es6.ruanyifeng.com/#docs/module