当前位置: 首页 > news >正文

qiankun解决的问题

  1. qiankun 中的沙箱机制是如何实现的?解决了什么问题?

一、实现方式

qiankun 的沙箱机制主要用于隔离微应用之间的运行环境,避免相互影响。其核心实现基于两种策略:

  1. 快照沙箱(SnapshotSandbox)

适用于不支持 Proxy 的低版本浏览器。

每次微应用切换时,记录 window 的状态(如全局变量),卸载时恢复原状态。

缺点:性能差、不支持多实例并发。

  1. Proxy 沙箱(ProxySandbox)

主要依赖于 Proxy 实现沙箱。

为每个微应用创建一个 Proxy(window) 的代理对象,拦截所有对 window 的修改,限制作用域。

示例:

const sandbox = new Proxy(window, {
set(target, prop, value) {
// 只修改沙箱中的对象,不影响全局
sandboxState[prop] = value;
return true;
},
get(target, prop) {
return sandboxState.hasOwnProperty(prop) ? sandboxState[prop] : target[prop];
}
});

优点:性能好,支持多个微应用并发运行。

  1. 样式隔离机制

除了 JS 沙箱外,还支持样式隔离:

Scoped CSS:通过添加前缀/标记隔离样式。

Shadow DOM:更彻底的样式隔离(实验性)。


二、解决的问题

  1. 全局变量污染

每个微应用都可能操作 window,如 window.appName = ‘a’,会造成冲突。

沙箱确保这些变量只在自己的作用域内生效。

  1. 样式冲突

不同微应用中的 CSS 可能互相覆盖。

样式隔离防止样式干扰。

  1. 多实例并发运行

Proxy 沙箱允许多个微应用同时存在于页面中,互不影响。

  1. 应用卸载时状态回滚

退出微应用时能恢复主应用或其它子应用原本的状态。


三、总结一句话

qiankun 通过 Proxy 等技术实现沙箱机制,有效隔离微应用之间的 JS 和 CSS 环境,解决全局变量冲突、样式污染、多实例运行等问题,是微前端稳定运行的核心保障。

http://www.xdnf.cn/news/625249.html

相关文章:

  • ABC406E 题解
  • python中Web框架Flask vs FastAPI 对比分析
  • 一个开源的 Blazor 跨平台入门级实战项目
  • 红黑树简单模拟实现
  • 随机森林(Random Forest)学习
  • ES的Refresh、Flush、Merge操作对性能的影响? ES如何实现近实时(NRT)搜索? ES聚合查询的Terms和Cardinality区别?
  • R基于多元线性回归模型实现汽车燃油效率预测及SHAP值解释项目实战
  • TDengine 高可用——双活方案
  • 爬虫实战之爬微博图片:xpath的具体运用
  • maven 3.0多线程编译提高编译速度
  • C++类型转换
  • Flink运行架构及并行度设置
  • 9.4在 VS Code 中配置 Maven
  • [C++]洛谷B3626 跳跃机器人(题干 + 详细讲解, BFS练习题)
  • 安卓11 不带谷歌包默认桌面布局
  • android studio 开启无线调试
  • JVM 的垃圾回收机制 GC
  • QT写槽函数的注意事项
  • 第1周 神经网络基石: 从零构建你的第一个模型
  • 深入理解设计模式之适配器模式
  • 类和对象(1)
  • ai陪伴项目——Android app开发
  • Spring框架--IOC技术
  • 国际前沿知识系列三:解决泛化能力不足问题
  • pytest+allure+allure-pytest 报告输出遇到的问题汇总
  • 计算机网络学习(五)——TCP
  • 【JVM 05-JVM内存结构之-堆】
  • 2025.5个人感悟
  • xdvipdfmx:fatal: File ended prematurely. No output PDF file written.
  • 企业批量处理刚需PrintPDF 网络财务办公打印 网页到 Office 一键转 PDF