ice-lab / icestark

:tiger: Micro Frontends solution for large application(面向大型应用的微前端解决方案),站点国内镜像:https://icestark.gitee.io
https://micro-frontends.ice.work
MIT License
2.03k stars 173 forks source link

手动执行 createMicroApp 会移移除主应用样式表 #268

Open maoxiaoke opened 3 years ago

maoxiaoke commented 3 years ago

在 Icestark 中,对 css 的处理是通过创建 <link /> 并插入到 DOM 中,并在微应用卸载的时候进行移除。这导致主应用在进行 dynamic import 时的一些处理,未被 icestark 标记到,从而被移除。

maoxiaoke commented 3 years ago

1.x 也有这个问题

lvren commented 3 years ago

这个问题有解决办法吗?现在的版本还有问题

maoxiaoke commented 3 years ago

@lvren 这里的问题比较困难的点在于,无法对区分 dynamic import 加载的资源的类别。目前,还是可以提供 shouldAssetsRemove 这个参数来不移除主应用的 dynamic import 的资源。比如主应用 dynamic import 资源为:

https://g.alicdn.com/framework/index.js
https://g.alicdn.com/framework/0.js
https://g.alicdn.com/framework/1.js

则该字段可进行如下配置:

{
    shouldassetsremove: ( url) => {
        if (url.includes('framework')) {
         return false
      }
    }
}
lvren commented 3 years ago

好的,我试试,昨天没有注意到这个参数。 我是手动导出了 recordAssets 这个函数,在每次进入子应用的前调用了一下