探索微前端架构:多种实现方式与实践思考

在当今的前端开发领域,微前端架构正逐渐成为热门话题。它借鉴了微服务的理念,将原本庞大的单体前端应用拆解为多个小型前端应用,并能让它们协同工作,就如同一个完整的应用一样。今天,咱们就一起来深入探讨微前端架构的几种常见实现方式以及在实际应用中需要考虑的方方面面。

一、微前端架构概述

微前端架构的核心思想,就是把 Web 应用从单一的单体应用转变成多个小型前端应用聚合而成的形态。这些小型前端应用具备独立运行、独立开发以及独立部署的能力,而且还能共享组件,实现并行开发。这里所说的前端应用是基于前后端分离的单应用页面,这是谈论微前端的基础前提。

二、微前端的几种实现方式

(一)路由分发式微前端

通过路由将不同的业务分发到不同的、独立前端应用上,这就是路由分发式微前端。实现它通常可以借助 HTTP 服务器的反向代理,或者利用应用框架自带的路由功能。目前来看,这种方式是采用最多、最容易上手的 “微前端” 方案。

但它也有个小缺点,那就是看起来更像是把多个前端应用简单拼凑在一起,每次用户从 A 应用切换到 B 应用的时候,往往需要刷新一下页面,用户体验上稍打折扣。

给大家举个实际项目里的例子吧,之前在进行遗留系统重写的项目中,我们制定了这样的迁移计划:

1.先用静态网站生成动态生成首页。

2.接着使用 React 技术栈重构详情页。

3.最后替换搜索结果页。

整个系统不是一次性迁移完成的,每完成一个步骤就得上线相应功能,这时就用到了 Nginx 来进行路由分发啦。下面就是一个基于路由分发的 Nginx 配置示例代码哦:

http {
    server {
        listen 80;
        server_name www.phodal.com;        
        location /api/ {
            proxy\_pass http://http://172.31.25.15:8000/api;
        }        
        location /web/admin {     
            proxy_pass http://172.31.25.29/web/admin;
        }        
        location /web/notifications {
            proxy_pass http://172.31.25.27/web/notifications;        
        }       
        location / {            
            proxy_pass /;        
        }    
    }
}

在这个配置里,不同页面的请求就被精准地分发到了不同的服务器上呢。

这种路由分发式微前端适用于以下几种场景:

  • 不同技术栈之间差异比较大,难以兼容、迁移、改造的时候。
  • 项目不想花费大量时间在系统改造上。
  • 现有的系统在未来将会被取代。
  • 系统功能已经很完善,基本不会有新需求。

要是想在这种情况下提升用户体验,还可以考虑结合 iframe 的方式来解决。

(二)使用 iFrame 创建容器

iFrame 虽然是个很古老、看似普通的技术,但它一直都挺管用的。