微前端究竟是什麼,可以帶來什麼收益

2021-02-20 前端布道師

點擊上方「藍色字體」,選擇「設為星標

作者:Efox

https://juejin.im/post/6893307922902679560

本文將講解微前端誕生的背景,詳細解說微前端概念的緣由以及其深入理解,讀完本文,相信你對微前端有一個比較全面的認知,明白它可以解決您團隊以及整個企業什麼問題,帶來怎麼樣的收益。

一.背景

現在很多企業,基本在物理上進行了應用代碼隔離,實行單個應用單個庫,閉環部署更新測試環境、預發布環境和正式環境。於是,我們的探討的是,基於不同應用不同庫獨立部署的情況下,如何實現多個應用之間的資源共享

之前比較多的處理方式是npm包形式抽離和引用,比如多個應用項目之間,可能有某業務邏輯模塊或者其他是可復用的,便抽離出來以npm包的形式進行管理和使用。但這樣卻帶來了以下幾個問題:

發布效率低下。如果需要迭代npm包內的邏輯業務,需要先發布npm包之後,再每個使用了該npm包的應用都更新一次npm包版本,再各自構建發布一次,過程繁瑣。如果涉及到的應用更多的話,花費的人力和精力就更多了。多團隊協作容易不規範。包含通用模塊的npm包作為共享資產,「每個人」擁有它,但在實踐中,這通常意味著沒有人擁有它。它很快就會充滿雜亂風格不一致的代碼,沒有明確的約定或技術願景。

這些問題讓我們意識到,擴展前端開發規模以便於多個團隊可以同時開發一個大型且複雜的產品是一個重要但又棘手的難題。

因此,早在2016年,微前端概念誕生了。

二. 微前端概念

Micro Frontends 官網定義了微前端概念:

Techniques, strategies and recipes for building a modern web app with multiple teams that can ship features independently.

翻譯成中文:

從Micro Frontends 官網可以了解到,微前端概念是從微服務概念擴展而來的,摒棄大型單體方式,將前端整體分解為小而簡單的塊,這些塊可以獨立開發、測試和部署,同時仍然聚合為一個產品出現在客戶面前。可以理解微前端是一種將多個可獨立交付的小型前端應用聚合為一個整體的架構風格。

值得留意的幾個點:

微前端不是一門具體的技術,而是整合了技術、策略和方法,可能會以腳手架、輔助插件和規範約束這種生態圈形式展示出來,是一種宏觀上的架構。這種架構目前有多種方案,都有利弊之處,但只要適用當前業務場景的就是好方案。微前端並沒有技術棧的約束。每一套微前端方案的設計,都是基於實際需求出發。如果是多團隊統一使用了react技術棧,可能對微前端方案的跨技術棧使用並沒有要求;如果是多團隊同時使用了react和vue技術棧,可能就對微前端的跨技術棧要求比較高。三. 微前端的優勢同步更新

對比了npm包方式抽離,讓我們意識到更新流程和效率的重要性。微前端由於是多個子應用的聚合,如果多個業務應用依賴同一個服務應用的功能模塊,只需要更新服務應用,其他業務應用就可以立馬更新,從而縮短了更新流程和節約了更新成本。

增量升級

由於歷史包袱,有團隊依舊存在使用著陳舊而龐大的前端單體模式,被過時的技術棧或趕工完成的代碼質量死死拖住後腿,其程度嚴重到了讓人想推翻重寫。為了避免完全重寫的風險,我們更加傾向於將舊的應用程式逐步地翻新,與此同時不受影響地繼續為我們的客戶提供新功能。

微前端能使我們更加自由地對產品的各個部分做出獨立的決策,讓團隊能做到持續地增加新功能並且對原有的整體幾乎不做修改,使我們的架構、依賴以及用戶體驗都能夠增量升級

另外,如果主框架中有一個非兼容性的重要更新,每個微前端可以選擇在合適的時候更新,而不是被迫中止當前的開發並立即更新。如果我們想要嘗試新的技術,或者是新的交互模式,對整體的影響也會更小。

簡單、解耦的代碼庫

每個單獨的微前端項目的原始碼庫會遠遠小於一個單體前端項目的原始碼庫。這些小的代碼庫將會更易於開發。更值得一提的是,我們避免了不相關聯的組件之間無意造成的不適當的耦合。通過增強應用程式的邊界來減少這種意外耦合的情況的出現

當然了,一個獨立的、高級的架構方式(例如微前端),不是用來取代規範整潔的優秀老代碼的。我們不是想要逃避代碼優化和代碼質量提升。相反,我們加大做出錯誤決策的難度,增加正確決策的可能性,從而使我們進入成功的陷阱。例如,我們將跨邊界共享域模型變得很困難,所以開發者不太可能這樣做。同樣,微前端會促使您明確並慎重地了解數據和事件如何在應用程式的不同部分之間傳遞,這本是我們早就應該開始做的事情!

獨立部署

與微服務一樣,微前端的獨立可部署性是關鍵。它減少了部署的範圍,從而降低了相關風險。無論您的前端代碼在何處託管,每個微前端都應該有自己的連續交付通道,該通道可以構建、測試並將其一直部署到生產環境中。我們應當能夠在不考慮其他代碼庫或者是通道的情況下來部署每個微服務。做到即使原來的單體項目是固定的按照季度手動發布版本,或者其他團隊提交了未完成的或者是有問題的代碼到他們的主分支上,也不會對當前項目產生影響。如果一個微前端項目已準備好投入生產,它應該具備這種能力,而決定權就在構建並且維護它的團隊手中。

自主的團隊

將我們的代碼庫和發布周期分離的更高階的好處,是使我們擁有了完全獨立的團隊,可以參與到自己產品的構思、生產及後續的過程。每個團隊都擁有為客戶提供價值所需的全部資源,這就使得他們可以快速且有效地行動。為了達到這個目的,我們的團隊需要根據業務功能縱向地劃分,而不是根據技術種類。一種簡單的方法是根據最終用戶將看到的內容來分割產品,因此每個微前端都封裝了應用程式的單個頁面,並由一個團隊全權負責。與根據技術種類或「橫向」關注點(如樣式、表單或驗證)來組成團隊相比,這會使得團隊工作更有凝聚力

四. 微前端方案種類

目前國內微前端方案大概分為:

基座模式:通過搭建基座、配置中心來管理子應用。如基於SIngle Spa的偏通用的乾坤方案,也有基於本身團隊業務量身定製的方案。自組織模式:通過約定進行互調,但會遇到處理第三方依賴等問題。去中心模式:脫離基座模式,每個應用之間都可以彼此分享資源。如基於Webpack 5 Module Federation實現的EMP微前端方案,可以實現多個應用彼此共享資源分享。

其中,目前值得關注是去中心模式中的EMP微前端方案,既可以實現跨技術棧調用,又可以在相同技術棧的應用間深度定製共享資源,如果剛開始調研微前端的話,可以先嘗試了解一下EMP微前端方案,或許會給你帶來不錯的使用體驗。

最後歡迎關注「前端布道師」,回復「交流」加入前端交流群!

React中Context這兩點注意事項須牢記

前端如何突破技術與業務的瓶頸 — Shopee一年半記

小前端進騰訊啦!

JSON.stringify() 的 5 個秘密特性

漫畫 | 前端發展史的江湖恩怨情仇

如果覺得這篇文章還不錯,來個【分享、點讚、在看】三連吧,讓更多的人也看到~

相關焦點

  • 【第2154期】EMP微前端解決方案
    可以理解微前端是一種將多個可獨立交付的小型前端應用聚合為一個整體的架構風格。值得留意的幾個點:微前端不是一門具體的技術,而是整合了技術、策略和方法,可能會以腳手架、輔助插件和規範約束這種生態圈形式展示出來,是一種宏觀上的架構。這種架構目前有多種方案,都有利弊之處,但只要適用當前業務場景的就是好方案。微前端並沒有技術棧的約束。
  • ETH 2.0新紀元開啟,究竟能帶來什麼?
    ETH 2.0究竟是什麼,Staking潛在著怎樣的風險和收益,本文希望通過簡單的梳理讓大家對ETH 2.0有更系統的了解。ETH 2.0新紀元從PoW轉換到PoS,以太坊可謂是所有區塊鏈網絡的先驅。下圖展示了該合約開放以來至今收到的ETH數量,可以看到,11月23日時大量ETH質押進該地址,標誌著ETH 2.0也成功達到發布門檻。截至12月10日,合約中的ETH總數已達131萬個,約合ETH 流通量的1.2%,並且仍在持續增長中。
  • 多空收益指的是什麼?多空策略是什麼意思?
    小編估計大家就是因為覺得它難有挑戰性,認為只要方法得當的話,很容易會有收益的。說起炒股,大家知不知道多空收益是什麼意思,多空策略適合每個投資者嗎?下面小編就與大家一起探討下。  一、多空收益是什麼意思?  多空收益是指多頭和空頭收益。
  • 黑暗料理王最高收益的菜 什麼菜收益比較高
    黑暗料理王最高收益的菜 什麼菜收益比較高 黑暗料理王什麼菜收益高?
  • 《DNF》收益遞減系統機制詳解 什麼是收益遞減系統
    導 讀 DNF收益遞減系統是什麼?
  • 【看視頻 學法條】人格權究竟給「人」帶來了什麼!
    【看視頻 學法條】人格權究竟給「人」帶來了什麼! 8月31日 星期一天氣:25/17℃ 多雲轉中雨明日:22/17℃ 小雨看視頻 學法條人格權究竟給
  • AI究竟可以給人類帶來什麼?
    甚至,大谷還增加了人臉識別功能,可以讓其自動搜索在現實中與之最為相像的影視明星。 可AI的作用就僅僅如此嗎,其實不然,如果AI只有這些作用,那為什麼依舊有這麼多科研工作者衷於此業,那AI究竟可以給我們帶來什麼呢?
  • 人工智慧營銷系統能帶來什麼便利
    打開APP 人工智慧營銷系統能帶來什麼便利 搜狐 發表於 2019-10-24 17:08:48 什麼是華商和營 想要成功,尋求好的項目、好的平臺就成了必然,然而好項目的演變與發展一定離不開好的商業模式。管理大師德魯克曾說過:當今企業間的競爭,不是產品之間的競爭,而是商業模式之間的競爭。那麼,究竟什麼樣的商業模式能指導中國億萬實體商戶成功呢? 當今,中國商業正處於蓬勃發展的階段,各種商業模式不斷推陳出新。
  • 每股收益計算公式 每股收益是什麼意思?
    很多上市公司,在每年公布財報的時候,都會提到每股收益,很多股民對此的了解都不多,那麼股票每股收益是什麼意思?每股收益計算公式是怎樣的?其實,每股收益是評估上市公司財務很重要的一個指標,下文就來帶大家了解一下。股票每股收益是什麼意思?
  • 《地下城堡2》冒險收益和什麼有關 冒險收益影響條件一覽
    導 讀 地下城堡2冒險收益跟什麼有關?地下城堡2冒險收益詳情介紹。
  • 大陸遊客赴臺遊究竟給臺灣帶來了什麼?
    不僅如此,大陸遊客赴臺遊還帶來了投資的信心和熱度。據臺媒報導,大陸遊客赴臺旅遊帶動臺北一些商圈店面買氣由翻紅,尤其101大樓、士林夜市、基隆夜市、東區、永康鼎泰豐這5大商圈,更是陸客觀光旅遊指名首選之地,最先受惠。大陸遊客赴臺遊,究竟給臺灣帶來了什麼?有島內媒體分析指出,陸客赴臺遊帶動了臺灣觀光業,也帶動了飯店業、服務業和不動產業。
  • 高房價究竟給國內的老百姓帶來了什麼?內行人直言不諱
    那高房價究竟給百姓帶來什麼呢?是好處還是壞處呢?為了搞清楚這個問題,我請來了一位房產專家,讓他來為我們解答下,高房價究竟會對老百姓帶來什麼。01一、高房價會使開發商更多拿地,危害農耕用地。我可以負責的說,非常難,只有一小部分的人才能做到。也正因如此,我們國家的單身率,離婚率年年上升,生育率、結婚率年年下降。02以上5點,就是內行人認為高房價帶給我們的危害,但不能說房地產完全就是壞的,沒功勞的,這樣太過於片面。在這裡引用人大副校長吳曉求的一句話,作為我們的總結。
  • 「智慧城市」究竟給我們的生活帶來什麼變化?
    而當一座城市有了數字大腦……「智慧城市」聽起來高端大氣,究竟給我們的生活帶來什麼變化?第六屆中國智慧城市國際博覽會3日至5日在京舉行,記者帶你一探究竟。——媽媽再也不用擔心我找不到停車位!開車去一趟人流量大的景區、醫院、商超,路程一刻鐘,找車位半小時;停一次車掃一個碼,繳費花時間不說,手機還關注了一堆公眾號。
  • 工業用地究竟是什麼?
    文/又又,資深園區開發運營專家  工業用地到底是什麼?尤其是近期工業用地新政頻出,更讓我想靜下來好好思索這些根本性問題——工業用地究竟是什麼?它跟產業發展是什麼關係?工業物業分割不分割,對產業發展是利是弊?工業用地地價如何定價最合理?實體經濟的發展需要怎樣的工業用地政策?  我「狠狠」地記得大學時《土地經濟學》的書上說「土地具有資源和資產兩種屬性」。
  • Tegra4究竟帶來了什麼?FunBox硬體解析
    在這種大背景下,我們迎來了由中興九城帶來的「飯盒」FunBox。     記得在宣傳中FunBox就為我們打造了數個「最」概念,其中最吸引人的非「最強硬體」莫屬,為了搶佔市場先機,FunBox成為了市場中首個採用NVIDIATegra4晶片的高清機頂盒。
  • 指數基金的收益來源到底是什麼?
    一個不懂投資的人,也不用任何研究,只需要買入並持有滬深300或標普500,就可以取得不錯收益,跑贏市場上大多數人,而且只要付很少的管理費(不像主動基金和私募基金要給高昂的管理費),憑啥??幾乎不需要付出什麼費用和精力,就可以取得這麼好的收益?如果稍微再加入一些低估買入、高估賣出策略,收益會更好。指數基金的錢是怎麼賺來的?★買指數基金是賭國運嗎?有人說買指數基金就是賭國運。國運好,指數基金的收益就來了。這個觀點大體正確,但是不太準確。
  • 一文看懂,紅寶書究竟能給你帶來什麼?
    想必到現在很多小夥伴的紅寶書已經到手了,大家在讚嘆紅寶書顏值擔當以及定哥超暖心備註的同時,是否想去進一步了解紅寶書究竟能給你帶來什麼?也就是說紅寶書究竟有哪些鮮明的特色,以及這些鮮明特色的背後暗藏著怎樣的玄機?下面就讓小編帶大家一起去一一了解。
  • 今年新媒體熱詞私域流量究竟是什麼?它能給我們帶來什麼收益?
    相信很多人都還不知道私域流量是什麼,這個詞呢從去年底開始就很火。今天我們從幾個方面來了解一下私域流量到底是個什麼神奇的東西呢! 既然有私域流量應該就有一個公域流量吧!對還真的有。公域流量和私域流量的區別的在哪裡呢。