ES模块
千万不要和CommonJs的规范搞混,两个额功能差不多,但是语法是不同的。虽然有点类似,刚开始我也搞混了。但是在webpack,也是用的是nodeJS进行编译的,所以可以吧这两个模块一起使用。
模块的定义, export,不能像commonJs用等号赋值,在尾部导出时,使用{}
模块引入 import,当混合node的模块导出时,编译的js文件里,会把两者导出的变量合并在一起,但是用node 来运行时会报错,node不能识别export。用node导出的模块可以使用ES的import 引入
注意:a= {fg:4} ,当我在a.js里的最后一行加上a = {fg:4}, 不管是在a.js里还是b.js里都没有改变导出的变量。因为用的是exports 导出,也就是commonJS规范。但是当用ES的模块规范情况就变得不一样。
模块的运行机制:ES的模块加载是动态引用,不会缓存变量。也就是说加载的时候是对被加载的模块的引用。根据只读引用,当执行的时候会去被加载的模块取值。
并且要是混有node的模块定义,会以ES的模块定义为最终的值。
Last updated
Was this helpful?