微前端

Youky ... 2022-10-16 前端
  • 前端工程化
About 1 min

# 微前端

# 微前端和iframe的优劣对比

优势

  • 更好的性能:可以按需加载子应用,而 iframe 每次加载都会创建新的进程。
  • 更好的用户体验:切换时不会重新加载整个页面
  • 更方便的开发体验: 子应用间可以共享 localStoragesessionStorage
  • SEO友好

劣势

  • 子应用间的上下文隔离不彻底
  • 迁移成本高,需要额外的适配
  • 技术栈受限

# qiankun的沙箱隔离机制

# 样式隔离

  • 动态样式隔离:qiankun 运行时会拦截子应用的 stylelink 标签,并在子应用挂载时动态添加,在卸载时移除
  • Shadow DOM :通过 Shadow DOM 创建一个独立的 DOM 作用域,使子应用的 CSS 仅作用于自己的 DOM 结构

Shadow DOM 未默认开启,动态样式隔离不能完全解决样式污染,因此默认情况下,是存在样式污染的问题的

# JS 沙箱

沙箱模式:

  1. Proxy沙箱:通过Proxy代理 window,子应用的所有全局变量只能作用于自己的作用域
  2. 快照沙箱: 在切换子应用时qiankun保存当前全局变量的状态,然后在子应用卸载后恢复之前的全局状态

快照沙箱用于不支持Proxy的低版本浏览器,由于不是实时隔离,仍有变量污染的风险

Last update: February 10, 2025 22:32
Contributors: Youky , Youky1