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

加载子应用,主应用相关css、js会重新再次加载;以及生产环境主子应用共享依赖相关问题 #1191

Open
ByronYan01 opened this issue Apr 27, 2024 · 9 comments
Labels
common common question

Comments

@ByronYan01
Copy link

ByronYan01 commented Apr 27, 2024

问题描述

1157 提供的解决方案,现在有些问题想请教一下

  1. 由于所有依赖是主应用加载运行,挂载到window,所以子应用通过window.frameElement.contentWindow.Vue = window.rawWindow.Vue共享依赖后,沙箱是主应用的
    • 导致子应用的弹框popper都挂在到主应用的body下(期望共享的依赖也能和不共享情况一样,各自属于各自应用)
    • 路由不能正常跳转(只能不共享vue-router,期望能共享)
  2. 每次加载子应用,主应用的所有css、js都会重新加载(期望不在加载主应用资源)

复现步骤

  1. 主应用渲染成功,
  2. 点击按钮,触发子应用加载

上传截图

请上传代码截图、控制台、终端等截图以帮助我们了解您的问题。

共享依赖,所属沙箱都是主应用
image

加载子应用,主应用css、js 重新加载并canceled
image

复现仓库

请提供一个精简的代码仓库,然后上传到自己的 github,以帮助我们复现您的问题。

https://github.com/ByronYan01/demo0408

环境信息

  • micro-app版本:1.0.0-rc.3
  • 主应用前端框架&版本:vue3+element-plus
  • 子应用前端框架&版本:vue3+element-plus
  • 构建工具&版本:vite5
@bailicangdu bailicangdu added the common common question label Apr 29, 2024
@bailicangdu
Copy link
Member

共享依赖的问题目前没有很好的解决方案

@ByronYan01
Copy link
Author

共享依赖的问题目前没有很好的解决方案

好的谢谢,期待官方能尽快提供较好的解决方案

@hdy1023
Copy link

hdy1023 commented May 6, 2024

共享依赖的问题目前没有很好的解决方案

好的谢谢,期待官方能尽快提供较好的解决方案

框架应该不会处理这种问题的, “window.Vue = window.rawWindow.Vue”这种写法本质上是和沙箱理念相冲突的。

不知道你们为什么需要这种代码设计。
如果是想减少公共资源请求可以用资源共享。
如果是主应用想为子应用提供些工具方法可以用采取主子应用数据通信。

上面那种写法,一是难以兼容市面上所有第三方依赖;二是边界不清晰,出现问题难以定位。

@ByronYan01
Copy link
Author

共享依赖的问题目前没有很好的解决方案

好的谢谢,期待官方能尽快提供较好的解决方案

框架应该不会处理这种问题的, “window.Vue = window.rawWindow.Vue”这种写法本质上是和沙箱理念相冲突的。

不知道你们为什么需要这种代码设计。 如果是想减少公共资源请求可以用资源共享。 如果是主应用想为子应用提供些工具方法可以用采取主子应用数据通信。

上面那种写法,一是难以兼容市面上所有第三方依赖;二是边界不清晰,出现问题难以定位。

谢谢回复;因为现在有的子引用加载速度有些慢,所以想一些依赖共享,减少一些加载时间
你说的资源共享,主子应用都访问相同路径的文件,使用globalAssets 或 global 属性达到访问一次,下次都走缓存,是这个意思嘛,回头我试一下

@UltramanWeiLai
Copy link

子应用的弹框popper都挂在到主应用的body下,这个请问一下解决了吗?

@ByronYan01
Copy link
Author

子应用的弹框popper都挂在到主应用的body下,这个请问一下解决了吗?

子应用不共享主应用的element-ui,自己应用安装不会有这个问题

@UltramanWeiLai
Copy link

子应用的弹框popper都挂在到主应用的body下,这个请问一下解决了吗?

子应用不共享主应用的element-ui,自己应用安装不会有这个问题

就是想共享,优化加载速度。

@ByronYan01
Copy link
Author

子应用的弹框popper都挂在到主应用的body下,这个请问一下解决了吗?

子应用不共享主应用的element-ui,自己应用安装不会有这个问题

就是想共享,优化加载速度。

那你试试所有子工程都访问同一路径的element-ui文件,使用globalAssets 或 global 属性达到访问一次,下次都走缓存(这个我还没试,应该可行)

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

No branches or pull requests

4 participants