Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

官网demo,预加载保活的子应用后后第一次切换到该子应用cssBeforeLoders和cssAfterLoders不会执行. #934

Open
iamzzg opened this issue Dec 6, 2024 · 2 comments

Comments

@iamzzg
Copy link

iamzzg commented Dec 6, 2024

描述bug
清晰准确的描述bug

如何复现
给出详细的复现步骤
1、第一步 xxx
2、 第二步 xxx

错误截图
如果有可以将截图带上

最小复现仓库或者地址
重要!!!,请尽量给出复现仓库,这样能极大加快bug解决速度
bug: 官网demo,预加载保活的子应用后后第一次切换到该子应用cssBeforeLoders和cssAfterLoders不会执行.

复现:
运行官网的demo,给react17这个子应用添加css插件,如图,然后点击react16子应用,再点击react17菜单,跳转后发现插件没生效
0cc0bc5a0fb9315480ad428ab288dc0

@yiludege
Copy link
Collaborator

yiludege commented Dec 8, 2024

经过试验,切换菜单,body{background:red!important} 这个css 是一直生效的,,cssLoader 只会在开始执行,后续是不会执行的,这个其他微前端也是这样的

@iamzzg
Copy link
Author

iamzzg commented Dec 9, 2024

经过试验,切换菜单,body{background:red!important} 这个css 是一直生效的,,cssLoader 只会在开始执行,后续是不会执行的,这个其他微前端也是这样的

大佬,你在官网demo的首页路由刷新一下浏览器,然后再点击react17这个开启了预加载和预执行的子应用,是不会执上述图中react17配置的插件的,不止是cssLoader,其他的插件全部不会执行,如果此时浏览器刷新第一次进来的子应用不是配置的预加载和预执行子应用A,那么切换到子应用A时所有插件都不会执行的。
我看了源码,如果一个子应用设置了预加载和预执行和保活并且浏览器第一次运行的不是这个子应用,那么切换时执行的startApp方法不会走renderTemplateToShadowRoot(会执行css相关loader)和sandbox.start(运行js)方法,预加载代码方法preloadApp执行时中只能加载到setupApp设置的plugins和preloadApp方法设置的plugins,startApp方法的plugins就不会执行了,这个感觉没法避免,因为对于没有调用startApp方法(即加载并运行)就先调用preloadApp的子应用来说,preloadApp永远拿不到startApp方法设置的的plugins,换句话说预加载和预执行的子应用插件只能加在setupApp方法或者preloadApp方法中,除非不用预加载和预执行。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants