当前位置: 首页 > 网络应用技术

运行源代码分析时的模块联合会

时间:2023-03-08 10:53:47 网络应用技术

  由于公司项目使用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