提到微前端,稍微懂微前端的同学,可能会这样问,为什么不用iframe方案呢?
其实,如果不考虑体验问题,iframe方案几乎是最完美的微前端解决方案;
iframe最大的特性就是提供了浏览器原生的硬隔离方案(样式隔离、js隔离),但它最大的问题也在于此,隔离性无法突破,应用间上下文无法被共享。
iframe存在哪些问题?这里简单说说。
url不同步。
iframe url状态丢失,浏览器的前进、后退按钮无法使用;UI不同步,DOM结构不共享。弹框及遮罩层问题:只能在iframe范围内垂直水平居中,没有办法在整个页面垂直水平居中;不同源的系统之间的通讯需要通过 postMessage,存在一定的安全性;
事件处理也是个问题,比如实现顶层菜单展开时,需要点击空白处收起,如果点到iframe则无法触发