前言
之前公司使用的技术便是通过iframe组成微前端的页面,遇到过一些问题,这几天正好面试又被问到,特地总结一下。
主要缺点
大致为一下四点:
- 创建速度比一般的DOM元素慢1~2个数量级
- 阻塞页面加载。onload事件触发浏览器的“忙”指示,告诉用户网页加载完毕。使用iframe后需要等所有iframe加载完毕才会onload。在 Safari 和 Chrome 里,通过 JavaScript 动态设置 iframe 的 SRC 可以避免这种阻塞情况
- 唯一的连接池。浏览器只能开少量的连接到web服务器,大多数浏览器主页面和iframe会共享这些连接,iframe加载资源可能用光所有可用连接,阻塞主页面。通常iframe的内容不如主页面重要。一种解决办法是,在主页面上重要的元素加载完毕后,再动态设置 iframe 的 SRC
- 不利于SEO。搜索引擎的检索程序无法解读 iframe。另外,iframe 本身不是动态语言,样式和脚本都需要额外导入