微前端架構


系統的組織在不斷變化的同時,其設計和架構也在不斷地調整。

如同數據庫的分庫分表一樣,既然一個組織的部門已經過於龐大,就進一步將它細化。

軟件的不同部分又被拆分到不同的部門之下。

隨着不同部門的業務發展,技術棧越來越難統一,出現了多樣化。

在走向多樣化后,用戶越來越厭倦一家公司的應用軟件分散在多個不同應用上。

應用的獲客成本越來越高,應用又一次走向聚合。

在分離了前后端之后,拆分降低了系統的復雜度,並進一步提高了軟件的開發效率。

隨着業務不斷擴張,需求也不斷擴張,應用又開始變得臃腫。

既然應用變大了,我們就繼續往下拆分,拆分成更小的單位。

                        -----摘選自《前端架構 從入門到微前端》

   “任何物體在沒有接受外界能量的條件下,總是朝着熵增(無序)的方向變化。”

   分庫分表,前后端分離,聚合,拆分到粒度更小的單位等軟件架構解決方案,解決的核心問題是,熵減

   應用臃腫,管理成本增加,獲客成本增加,組織臃腫等表現形式,表現形式的本質是,熵增

   總的來說,“微前端”這個名詞,以及它所帶來的一系列策略。都是為了解決軟件和組織在某一階段的,熵增的問題。


 

一、微前端架構

特點

  • 應用自治
  • 單一職責
  • 技術棧無關 

為什么需要

  • 遺留系統遷移
  • 后端解耦,前端聚合
  • 熱鬧驅動開發

技術拆分方式

  • 路由分發式
  • 前端微服務化。不同框架之上設計通信和加載機制,以在一個頁面內加載對應應用。
  • 微應用。軟件工程方式,在部署構建環境中,把多個獨立的應用組合成一個單體應用。
  • 微件化。開發一個新的構建系統,將部分業務功能構建成一個獨立的chunk代碼,使用時只需遠程加載。
  • 前端容器化。將iframe作為容器來容納其他前端應用。
  • 應用組件化內。借助Web Components技術,來構建跨框架的前端應用。

說明:

①微件(Widget),flutter框架作為移動端的解決方案,就是微件化的實踐之一。

②Web component技術的推廣受限於瀏覽器的支持程度。

微前端架構設計

  • 組件與模式庫
  • 應用通信機制
  • 數據共享機制
  • 專用的構建系統(可選)

架構模式

  • 基座模式
  • 自組織模式

設計理念  

  • 中心化:應用注冊表
  • 標識化應用
  • 應用生命周期管理(微前端框架Single-SPA的基本生命周期,load->bootstrap->mount->unload->unmount)
  • 高內聚,低耦合

微架構

  • 后端拆分。微服務。
  • App拆分。App存在多種容器,有插件化、組件化、小程序等不同的方案。
  • 前端拆分。前端微服務、微應用化、微件化等。(前端走向微前端架構的原因,除了龐大的單體應用,還有一部分是要聚合舊的遺留系統)

 

二、實戰篇-前端微服務化

緣起:

  • 注冊表。應用可以自動加載、運行,並能夠與應用注冊表進行聯系
  • 完全隔離。每個應用的開發是完全隔離的,開發時互不影響。它可以接入某個框架,以更好地支持構建

適用性:

  • 應用地掛載DOM節點
  • 應用的服務地址
  • 應用的唯一標識符
  • 應用的名稱
  • 應用所需要加載的腳本文件

設計方案:

  • 通用型微前端方案 Single-SPA
  • 定制型微前端方案 Mooa

說明:

①Single-SPA官網https://single-spa.js.org/docs/examples/

②Single-SPA參考GitHub-https://github.com/single-spa/single-spa

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM