跳到主要內容
黯羽輕揚每天積累一點點

Why micro-frontends?

免費2026-03-05#Front-End#微前端与组件化#微前端的价值#why we need micro-frontends#micro-frontends pros and cons#微前端架构

寫在前面

上一篇 Micro Frontends 已經從概念定義及實現思路上探究了微前端是什麼,而要徹底理解微前端的話,還需要想清楚這些問題:

  • 為什麼需要微前端?

  • 微前端能解決什麼問題?組件化解決不了嗎?

  • 微前端究竟帶來了什麼?多技術棧並存?統一的技術棧不好嗎?

一。背景:為什麼需要微前端?

從最初的 HTML 內聯腳本,到 9102 年的幾十萬行 JavaScript 代碼,前端已經變得越來越重:

  • 幾個 G 的前端代碼庫

  • 數百號前端開發人員

  • 幾 MB 的 Bundle Size

也越來越複雜:

  • 層出不窮的框架、類庫

  • 各式各樣的工程化體系

  • 別具特色的跨端實踐

因而需要一種分解複雜度、提升協作效率、支持靈活擴展的架構模式,於是,微前端 登上了舞台

二。應用場景:微前端能解決什麼問題?

微前端的理念類似於微服務,將龐大的整體拆成可控的小塊,並明確它們之間的依賴關係。

通過拆分自治、支持多技術棧並存的方式,解決前端應用所面臨的種種問題:

  • 業務模塊間日益加劇的耦合如何治理?

  • 開發團隊如何拆分、解耦,才能達到並行開發的目的?

  • 新框架、新方案如何適應現有的工程環境(構建工具等)?

  • 舊的框架類庫如何平穩升級?

按業務功能將一整塊前端應用分解成一系列更小、更內聚的微前端應用,同時通過明確的交互協議來管理這些應用間的依賴關係,實現不同業務模塊的解耦。並將每個微前端應用交由獨立團隊負責,各自獨立開發獨立部署,充分利用並行性

另一方面,在多技術棧並存能力的加持下,不僅能夠低成本引入新的技術實踐,還允許低風險地替換產品局部功能,意味著依賴項升級、架構更替、UI 改版等重大決策都能以循序漸進的方式平穩落地:

  1. 分解:將應用拆分成由一系列小型應用(子應用)組成的應用

  2. 替換:替換子應用

  3. 組合:確保替換過的能夠和諧工作

通過微前端框架建立應用間的主從關係(1 個容器應用 + n 個子應用),接著進行局部替換,直至全部完成。然而,實踐中通常需要在重構的同時保證新特性的持續迭代,所以實際流程可能是:

  1. 抽象:增加一層主從關係,比如通過前端路由來控制

  2. 擴展:新增子應用

  3. 組合:原應用直接作為一整個子應用,帶著新特性(新增的子應用)上線

  4. 重構:(時間上能與擴展並進)分解、替換原應用

讓重構等工作能夠在相對較長的時間跨度下可控地漸進完成,而無需承擔一刀切的資源需求與變更風險

組件化解決不了嗎?

The problems they're supposed to solve sound to me like they're already solved by a good component model. So is this solving an organizational issue rather than technical one? Such as if two teams can't agree on anything, even shared infra.

(摘自 I don't understand micro-frontends.)

誠然,組件化也能實現拆分自治,比如在 React 中可以通過 React.lazy + Suspense 的方式優雅地完成代碼拆分

但這建立在組件模型統一(或者說技術棧一致)的前提下,而微前端的另一半優勢在於能夠打破單一技術棧的限制:

They are microservices in the browser. Meaning separately built and deployed frontend apps that can choose their own framework and libs. The purpose is organizational scaling and avoiding framework lock-in.

這是組件化、模塊化等方案所無法滿足的。同樣的,git submodule、npm module 等拆分方案也都無法直接提供多技術棧並存的能力

三。意義:微前端究竟帶來了什麼?

工程價值

一半來自模塊化帶來的好處,諸如:

  • 研發效率提升:多業務線並行開發,團隊自治,獨立迭代

  • 交付成本降低:應用級功能複用

  • 運維風險降低:變更範圍縮小

另一半來自多技術棧並存能力的好處:

  • 技術選擇增多:不再與單一技術棧捆綁在一起,有助於新技術、新交互模式的實驗性試錯

  • 可複用性增強:技術棧差異不再是功能複用的障礙,對於第三方模塊尤為重要

  • 重構風險降低:低風險局部替換,漸進地完成大規模重構

當然,允許多技術棧並存,並不意味著鼓勵引入盡可能多的技術棧,因為更少的技術棧通常更有利於基礎設施建設、資源複用與經驗共享

商業價值

微前端視角下的 Web 應用是一系列獨立功能的組合:

The idea behind Micro Frontends is to think about a website or web app as a composition of features which are owned by independent teams.

(摘自 What are Micro Frontends?)

因此,微前端應用能夠像雲計算背景下的雲服務一樣能夠即取即用,實現應用模塊級(第三方)功能的接入/融合,其商業價值在於:

  • 細粒度、可組合的前端產品形態:前端產品/能力能夠以更細粒度,更靈活的形態輸出(像雲服務一樣按需自由組合)

  • 微前端應用生態:規範化的微前端應用能夠形成生態,進而產生類似於小程序的平台體系

參考資料

評論

暫無評論,快來發表你的看法吧

提交評論