目录
无界方案
在乾坤的issue
中一个议题非常有意思,有个开发者提出能否利用iframe
来实现js
沙箱能力,这个idea
启发了无界方案,下面详细介绍
应用加载机制和 js 沙箱机制
将子应用的js
注入主应用同域的iframe
中运行,iframe
是一个原生的window
沙箱,内部有完整的history
和location
接口,子应用实例instance
运行在iframe
中,路由也彻底和主应用解耦,可以直接在业务组件里面启动应用。
采用这种方式我们可以获得
收益
-
组件方式来使用微前端
不用注册,不用改造路由,直接使用无界组件,化繁为简
-
一个页面可以同时激活多个子应用
子应用采用 iframe 的路由,不用关心路由占用的问题
-
天然 js 沙箱,不会污染主应用环境
不用修改主应用
window
任何属性,只在iframe
内部进行修改 -
应用切换没有清理成本
由于不污染主应用,子应用销毁也无需做任何清理工作
路由同步机制
在iframe
内部进行history.pushState
,浏览器会自动的在joint session history中添加iframe
的