参考答案

单纯根据对概念的理解,很容易想到实现微前端的重要思想就是将应用进行拆解和整合,通常是一个父应用加上一些子应用,那么使用类似Nginx配置不同应用的转发,或是采用iframe来将多个应用整合到一起等等这些其实都属于微前端的实现方案:

通过Nginx配置反向代理来实现不同路径映射到不同应用,例如www.abc.com/app1对应app1,www.abc.com/app2对应app2,这种方案本身并不属于前端层面的改造,更多的是运维的配置。

优点:简单,快速,易配置

缺点:在切换应用时会触发浏览器刷新,影响体验

父应用单独是一个页面,每个子应用嵌套一个iframe,父子通信可采用postMessage或者contentWindow方式

优点:实现简单,子应用之间自带沙箱,天然隔离,互不影响

缺点:iframe的样式显示、兼容性等都具有局限性;太过简单而显得low

  • Web Components

每个子应用需要采用纯Web Components技术编写组件,是一套全新的开发模式

优点:每个子应用拥有独立的script和css,也可单独部署

缺点:对于历史系统改造成本高,子应用通信较为复杂易踩坑

每个子应用独立构建和部署,运行时由父应用来进行路由管理,应用加载,启动,卸载,以及通信机制

优点:纯前端改造,体验良好,可无感知切换,子应用相互隔离

缺点:需要设计和开发,由于父子应用处于同一页面运行,需要解决子应用的样式冲突,变量对象污染,通信机制等技术点