举个例子说明下:
如果文件a导出了字符串a,index.js引入了a,并且console.log(字符串a),那么如果没有开启scope hosting,打包出来的结果是:
在modules数组中,有一个对象元素,key为a模块路径,value为一个函数,函数内部包含了a模块的内容;然后还有一个index.js模块,根据引用关系去找到modules中的a模块,然后加载进来。相当于打包后,a模块的内容都被打包进去了。
但其实,我只是在index.js中使用了一下a模块的导出结果,也就是字符串a,那么我只要把index.js中用到a的地方替换成字符串’a’就可以了,没必要把整个a模块都打包进来。scope hosting就是用来做到这一点的。