日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
微前端架構(gòu)初探以及我的前端技術(shù)盤點

前言

最近幾年微前端一直是前端界的熱門議題, 它類似于微服務(wù)架構(gòu), 主要面向于瀏覽器端,能將一個復(fù)雜而龐大的單體應(yīng)用拆分為多個功能模塊清晰且獨立的子應(yīng)用,且共同服于務(wù)同一個主應(yīng)用。各個子應(yīng)用可以獨立運行、獨立開發(fā)和獨立部署。

微前端架構(gòu)概念的誕生及應(yīng)用對于提供復(fù)雜應(yīng)用服務(wù)的企業(yè)來說顯然是一種機遇, 同樣也是一種挑戰(zhàn).本文主要就微前端架構(gòu)的概念和實現(xiàn)方案做一個總結(jié)和復(fù)盤,并且通過一個實際案例來實踐微前端架構(gòu),希望能對同樣有此需求的朋友們提供一些幫助和思路。

你將收獲

  • 什么是微服務(wù)以及微服務(wù)能給企業(yè)帶來什么。
  • 微前端架構(gòu)概念及方案。
  • umi下的微前端架構(gòu)方案實戰(zhàn)。
  • 一個程序員的技術(shù)復(fù)盤與展望。

正文

在總結(jié)微前端架構(gòu)之前,讓我們來先看看微服務(wù)是什么。

1、什么是微服務(wù)以及微服務(wù)能給企業(yè)帶來什么

微服務(wù)是一種用于構(gòu)建應(yīng)用的架構(gòu)方案。微服務(wù)架構(gòu)有別于更為傳統(tǒng)的單體式方案,可將應(yīng)用拆分成多個核心功能。每個功能都被稱為一項服務(wù),可以單獨構(gòu)建和部署,這意味著各項服務(wù)在工作(和出現(xiàn)故障)時不會相互影響。

傳統(tǒng)的web軟件開發(fā)架構(gòu)往往如下圖所示:

雖然我們在傳統(tǒng)應(yīng)用中可以采用模塊化來拆分業(yè)務(wù)邏輯和開發(fā)方式,但最終它們會打包并部署為單體式應(yīng)用。這種架構(gòu)往往更適合中小型項目, 開發(fā)簡單直接,更適合集中化管理應(yīng)用.但往往也會存在很多缺點,比如可擴展性不足,相同或者相似業(yè)務(wù)復(fù)用困難,部署時間長, 業(yè)務(wù)復(fù)雜之后很難維護等問題。

對于復(fù)雜系統(tǒng)和業(yè)務(wù)來說,我們一般會采用微服務(wù)架構(gòu)。其思路是將一個完整的應(yīng)用分解為小的、互相連接的微服務(wù),每個服務(wù)完成特定的功能, 并且某些特定的服務(wù)還能為其他服務(wù)提供API接口。

由上圖可以發(fā)現(xiàn)微服務(wù)給我們帶來的好處:

  • 將一個龐大的單體拆解成多個子服務(wù),大大降低了開發(fā)復(fù)雜度。
  • 任務(wù)邊界劃分明確, 每個子服務(wù)之間單獨開發(fā), 不同服務(wù)之間可并行由不同的開發(fā)人員開發(fā),提高開發(fā)效率。
  • 更細粒度的加強了模塊化進程, 可維護性和可讀性更高。
  • 團隊之間只要制定好API約定, 那么不同成員或者團隊可以采用不同的技術(shù)開發(fā)服務(wù)。
  • 可用共享服務(wù), 使得不同子服務(wù)可組合實現(xiàn)更復(fù)雜的功能。
  • 每個微服務(wù)可獨立部署發(fā)布,使得自動化CI(持續(xù)集成)/CD(持續(xù)交付)成為可能。

但微服務(wù)并不是任何場景下都是合適的, 微服務(wù)的目標是充分分解應(yīng)用程序,以促進敏捷開發(fā)和持續(xù)集成部署。在部署微服務(wù)時我們需要做好適當?shù)倪吔鐒澐?并處理不同微服務(wù)之間的并發(fā)問題,這些都是對整個項目帶來的挑戰(zhàn),需要更加專業(yè)的技術(shù)成員來把控.目前市面上也有很多開源的微服務(wù)框架比如DubboSpring Cloud等,筆者之前公司采用的Spring Cloud就是一個很好的微服務(wù)架構(gòu)方案。

2、微前端架構(gòu)概念及方案

(1)理解微前端架構(gòu)

上面簡單介紹了一下微服務(wù)架構(gòu),接下來我們進入主題,來聊聊微前端微前端微服務(wù)實現(xiàn)的目的類似,都是將應(yīng)用由單一的單體應(yīng)用轉(zhuǎn)變?yōu)槎鄠€小型子應(yīng)用,差別就在于:

  • 微前端應(yīng)用于瀏覽器端,主要是對web應(yīng)用進行拆解,最后將不同子系統(tǒng)(模塊)聚合成一個完整的應(yīng)用。
  • 微前端主要目的是聚合,即將不同子系統(tǒng)聚合成一個大系統(tǒng),而微服務(wù)架構(gòu)目前更多是解耦,即解耦不同服務(wù)間的依賴。

我們先來看看微前端的一些思考者.

Michael Geers 大佬發(fā)表了一些對微前端的一些思考,內(nèi)容大致總結(jié)一下就是:

“ 微前端 ”是將微服務(wù)的概念擴展到前端領(lǐng)域。為了構(gòu)建一個功能強大的瀏覽器應(yīng)用程序(也稱為單頁應(yīng)用程序),當前普遍的趨勢是將其建立在微服務(wù)架構(gòu)之上。但是隨著時間的流逝,通常由獨立團隊開發(fā)的前端層會不斷增長,并且變得更加難以維護。Micro Frontends背后的想法是將Web應(yīng)用程序視為由獨立團隊擁有的功能的組合。每個團隊都有自己關(guān)心和專長的不同業(yè)務(wù)或任務(wù)領(lǐng)域。每個團隊可以跨職能,并且從數(shù)據(jù)庫到用戶界面,端到端地開發(fā)其功能。

正如下面的例子所示:

當我們的系統(tǒng)中有多個不同的子模塊,并且子模塊之間有相對獨立且完整的功能體系時, 一旦子模塊變得越來越多, 那么整個應(yīng)用將變得非常龐大且臃腫,開發(fā)和維護成本大大提高.如果在這種場景下我們采用SPA模式開發(fā),那么項目后期將變得不可想象,頁面首次加載將變得非常慢(筆者曾經(jīng)就經(jīng)歷過,開發(fā)一個復(fù)雜系統(tǒng)頁面首次加載花了20多秒,所以不得不采用MPA來處理); 但是我們采用MPA(多頁應(yīng)用)模式,雖然解決了應(yīng)用臃腫的問題, 但仍然存在很多有待處理問題,比如模塊切換需要重新刷新頁面, 公共組件無法共享,子模塊直接,父子模塊之間的通信問題,開發(fā)部署繁瑣等.這寫都是傳統(tǒng)開發(fā)模式會遇到的問題。

試想一下,如果面對以上問題, 如果有一種架構(gòu)模式, 可以讓我們在主應(yīng)用中共享公共組件和狀態(tài)(但是要保證子應(yīng)用運行時內(nèi)部的狀態(tài)隔離), 并且不同子模塊之間可以單獨開發(fā)部署, 模塊間切換不刷新頁面, 并且模塊之間,父子應(yīng)用之間可以通過某種簡單的方式實現(xiàn)通信,這樣是不是就完美了?不錯, 這也許就是微前端要解決的問題。

往往企業(yè)的中后臺系統(tǒng)更加適合使用微前端架構(gòu),因為B端大部分都是業(yè)務(wù)驅(qū)動,而往往這些業(yè)務(wù)之間會非常復(fù)雜, 比如Saas, Paas等系統(tǒng).像類似于云平臺,CRM,ERP系統(tǒng)往往是微前端架構(gòu)的拯救對象。

筆者曾經(jīng)接手的ERP系統(tǒng),由于開發(fā)時間比較早,往往有很多遺留的歷史包袱,比如新老技術(shù)棧的糅合, 前端業(yè)務(wù)代碼龐大而毫無違和感,為了對其繼續(xù)迭代開發(fā), 重構(gòu)是必經(jīng)之路,微前端另一個重要的作用筆者認為就是解放.解放不可挽回的痛.

筆者之前在寫從0到1教你搭建前端團隊的組件系統(tǒng)(高級進階必備)這篇文章時簡單提了一下微前端的一些知識,這里先回放一張筆者之前做的簡陋的圖,方便大家理解微前端架構(gòu)。

但我們所看到的不是事實的全部,在文章后面筆者會總結(jié)一張更全面的圖,來整理微前端的一些實踐應(yīng)用。

(2)微前端架構(gòu)實現(xiàn)的方案

上面內(nèi)容我們大致了解了一下微前端的概念和作用,接下來筆者總結(jié)一下曾經(jīng)經(jīng)歷過的微前端實現(xiàn)方案。

基于MPA + iframe + requirejs實現(xiàn)的微前端架構(gòu)

這是筆者接手最早的一個項目,主要是服務(wù)于企業(yè)內(nèi)部的ERP系統(tǒng),當時采用的技術(shù)棧主要是jquery+layui+requirejs,記得還是筆者剛畢業(yè)時參與的項目.主要是利用AMD模塊化機制來復(fù)用代碼,當時項目代碼及其龐大復(fù)雜,大致架構(gòu)如下:

傳統(tǒng)實現(xiàn)方式一般是通多多頁面的方式來對應(yīng)用解耦,并采用模塊化加載機制來導(dǎo)入可復(fù)用組件.系統(tǒng)間通型采用storage+window.opener+iframe.比如我們一個大系統(tǒng)的首頁可能會有來自不同子系統(tǒng)的頁面,已iframe的方式嵌入.不同子系統(tǒng)間由不同的人維護,雖然做到了微前端的模式,但是還是有很多缺點。

改架構(gòu)的一般分工是架構(gòu)組主要負責(zé)制定架構(gòu)標準和規(guī)范,維護公共模塊(類似于現(xiàn)在的組件,當時由于采用jquery生態(tài),可以簡單的說成公共UI插件的維護);業(yè)務(wù)組主要負責(zé)編寫業(yè)務(wù)代碼,實現(xiàn)某個系統(tǒng)的具體交互和功能。


本文題目:微前端架構(gòu)初探以及我的前端技術(shù)盤點
鏈接地址:http://www.5511xx.com/article/cdgjics.html