# qiankun (opens new window)

微前端解决方案

主要依赖包

整体逻辑:

  • 主应用和子应用都是独自运行的站点
  • 主应用根据当前路径和配置内容,匹配对应子应用
  • 请求子应用的html文件,解析得到子应用资源

    所以一般要求子应用是SPA

  • 使用eval执行子应用的脚本;识别其中带有entry属性的脚本或最后一个脚本,取其exports,按需触发脚本披露的‘生命周期钩子’

    子应用必须提供mountunmount,用来挂载和卸载dom

  • 子应用切换时装载/卸载<style>;控制样式的相互污染

# 沙箱sandbox

  • 全局对象
    • 使用 Proxy 代理 window
      • ProxySandbox
      • LegacySandbox
    • 遍历 window 的直接属性,独立储存应用内挂载在上面的属性(在应用运行前注入应用修改的,应用运行后换回应用修改前的)
      • SnapshotSandbox
  • 包装子应用脚本
    • 通过‘闭包’和with,使子应用脚本执行的全局对象指向代理对象
最后更新: 1/12/2023, 1:44:05 PM