2-25 Import和CommonJs在webpack打包过程中有什么不同?
-
es6模块调用commonjs模块
可以直接使用commonjs模块,commonjs模块将不会被webpack的模块系统编译而是原样输出,并且commonjs模块没有default属性 -
es6模块调用es6模块
被调用的es6模块不会添加{esModule:true},只有调用者才会添加{esModule:true},并且可以进行tree-shaking操作,如果被调用的es6模块只是import进来,但是并没有被用到,那么被调用的es6模块将会被标记为/* unused harmony default export */,在压缩时此模块将被删除(如果被调用的es6模块里有立即执行语句,那么这些语句将会被保留) -
commonjs模块引用es6模块
es6模块编译后会添加{__esModule:true}。如果被调用的es6模块中恰好有export default语句,那么编译后的es6模块将会添加default属性 -
commonjs模块调用commonjs模块
commonjs模块会原样输出