Closed tkgkn closed 3 weeks ago
大部分场景下,其实都是可以自动获取的,如果需要额外设置,icestark 提供了一个方法可以直接调用,参考 https://micro-frontends.ice.work/docs/api/ice-stark-app/#setlibraryname
大部分场景下,其实都是可以自动获取的,如果需要额外设置,icestark 提供了一个方法可以直接调用,参考 https://micro-frontends.ice.work/docs/api/ice-stark-app/#setlibraryname
OK,看了下setLibraryname
的确也是调的setCache
方法,跟ice2子应用构建时设置library的方法一致。
但我这种ice2主应用接ice3微应用的场景,在ice3和ice-stark的文档里好像没有找到介绍,建议文档里加一下。这个不看源码实现,还真不知道。
删除了@ice/plugin-stark的改动,增加了ice3文档中关于微应用用ice3,主应用用ice2时,微应用改造增加调用setLibraryName
的描述。
ice2主应用,ice3子应用的话,加载子应用提示找不到生命周期。原因是ice2的主应用会去读window.ICESTARK.library,获取当前子应用在window下的模块对象,但是ice3子应用不会往window.ICESTARK.library设置子应用的模块名称,而是直接挂到window下,如window.['ice3AppName'] = {mount: xx, unmount: xx},ice2读不到。
因此在@ice/plugin-stark插件增加了了一个参数,并在插件注入entryCode的部分,增加对这个参数的判断,如果有传入,就往window.ICESTARK.library设置子应用的模块名称。