ES6模块设计思想: 尽量静态化,使得编译时就能确定模块的依赖关系,输入、输出的变量。可做静态优化。
ES6模块不是对象,而是通过export命令显示指定输出的代码,再通过import命令输入
export命令可出现在模块文件的任何位置,只要处于顶层即可
export default 为模块指定默认输出 import不要大括号
export
export default 方法输出模块,import时可方便指定任意名字(不需要“大括号”语法)
import
文件路径(绝对、相对)js后缀可省略,若只是模块名不带路径需由配置文件配合
import命令接受一对大括号,里面指定要从其他模块导入的变量名,有提升效果,
import 命令在编译阶段执行,在代码运行之前,import是静态执行,所以不能用表达式和变量(这些是指在运行时才能得到的结果的语法)
import 语句是Singleton模式(加载相同模块多次,只会执行一次)
module的加载实现
async属性、defer属性(等整个页面在内存中正常渲染结束才会执行: DOM结构完全生成,其他脚本执行完成)