由于公司项目使用WebAPCK模块联合会(模块联合)的新功能,因此我很好奇如何运行它,因此我研究了运行时间代码,因此本文记录了它。
https://webpack.docschina.org/concepts/module-federation/
主机代码
远程代码
提出了多少疑问?
1.为什么使用主机入口文件的动态导入?2.如何实现主机和远程共享模块?让我们首先看主机构建产品JS的入口
在这里,__webpack_require __。e加载react-dom和src_bootstrap_js。反应是由于splitchunk;src_bootstrap_js是因为我们的输入文件是导入的(xxx)。
__webpack_require __。你做了什么?
__webpack_require __。什么方法?
什么是WebPack/Container/Reference/com?
它可以从WebPack/Container/Reference/com获得。
什么是onexternal,onitialized,onFactory的一种方法?
所以__webpack_require __。F.Remotes实际上做了2件事
从代码可以看出它实际上是方法
从代码可以看出,加载serversionCheckfallback实际上称为INIT高订单函数,而INIT调用__webpack_require __。获得遮阳模块内容后,执行formute onfactory,并将共享模块关联到运行时。
注册方法将共享模块信息记录到__webpack_require __。s
Initexternal方法
因此,实际上,在加载了遥控文件文件后,全局范围上将有一个com变量。它具有使主机使用的GET和INIT方法。GET方法实际上是在遥控器中公开该模块。初始方法是接收范围以实现股票模块共享。
问题1因此,上述问题1的答案是因为您需要在获取远程信息之前等待RemoteNtry文件加载,因此您需要在入口文件中导入,以便可以在本地加载远程模块。
问题2问题2的答案是,主机首先通过webpack_require.f.consumes方法在主机中注册共享模块到webpack_require.s,然后等待远程列入加载,然后通过__webpack_require ___________________require __。s到模块。Init.Methods,在模块中注册共享模块。INIT到遥控器以实现主机和远程共享模块。
Webpack联合会如何运行?
在加载入口文件时,主机代码正常执行
第一次,如果您有任何缺点,请指出,谢谢。如果有收成,麻烦了?~~~
原始:https://juejin.cn/post/70974664705574558