ES6 harmony

1执行的顺序:

 一般来说,js引擎去执行一个模块(import)会做一下几件事情:

 1>语法解析(AST)词法分析语法分析:进行语法分析(AST),解析模块的源码,看是否有语法错误;

 2> 加载:递归地加载所有被导入的模块。

 3> 连接:没遇到一个新的模块,为其创建作用域并将模块内部申明的所有绑定填充到改作用域,其中就包含由               其他模块导入的内容;

4>运行时:每一个新加载的模块内部执行所有语句;


Import提前计算所有的依赖;


ES6模块系统的实现:在编译的时候,计算所有依赖并将所有模块打包成一个文件,通过网络传输一个文件;


静态VS动态:

1只可以在模块的最外层作用域使用import和export,不可在条件语句中使用,也不能在函数作用域中使用import;

2所有的到处标识符一定要在源码中明确出它们的名字,不可以利用类似数组遍历的处理方式去到处一系列名称列表;

3模块对象被冻结了,不可以hack模块对象并为其添加polyfill风格的新特性;

4一个模块的所有依赖项目,必须在模块代码执行之前就全部加载、解析、并及早链接,不存在通过import来动态按需加载的说法;

5 import没有恢复机制,一个app囊括很多模块,其中一个模块无法加载或无法解析、编译错误,所有的模块都不回正常执行,利用webpack(rollup)可以再编译期期间,检测代码的错误;

你可能感兴趣的:(ES6 harmony)