精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于Module Federation的模塊化跨棧方案探索

開發 前端
本文簡要介紹了前端領域在邁出技術棧統一這一步后經歷的痛點以及挑戰,分別從遷移粒度以及使用場景兩個方面針對微前端以及模塊化這兩類開發模式進行了對比,并且從解決用戶開發痛點出發闡述架構如此設計的原因。最后列出了在模塊化遷移或開發過程中需要注意的問題并給出了解決方案。主旨還是希望能夠以更低的成本與更好的開發體驗推動技術棧統一與遷移。

一、背景

公司發展到一定程度,隨著業務分支不斷變多,B端C端的項目也隨之增多,由于歷史原因可能產生新老技術棧(vue/react)共存的情況,這既不利于組件物料的抽離統一(一類通用組件需適配多套技術棧),也增大了開發者跨項目開發的適應成本。因此技術棧收斂是提升前端平臺體系開發效率重要的一環。

提到技術棧遷移,我們首先想到的是微前端方案,在隔離性上來說,微前端確實很好的方案,但是對于一些復雜核心模塊,往往需要較長的周期遷移,并且伴隨著該模塊的不斷迭代,使得整體項目的遷移進度逐步拉長。最終核心痛點可能還是沒有完全解決。

基于以上的背景,我們需要解決兩個問題:

更絲滑的技術棧遷移:不僅是新頁面,舊有頁面的需求也能用react開發,做到代碼塊級遷移。

跨技術棧開發:MF組件化開發,需要將react組件轉化為vue組件以實現在同一界面嵌入react組件。

二、跨技術棧開發

vuereact-combined [1]提供了組件轉換較為通用的解決方案,利用applyReactInVue在vue指定生命周期渲染React組件,并區分了update階段與create階段以減少不必要的dom構建,同時監聽上層的$attrs、$listenters,并通過reactComponentWrapper中間層拿到的reactInstance透傳相應狀態及方法。

React  -> Vue 轉化源碼可參考這里[2]

圖片

同時vuereact-combined [3]內部還進行了vuex、router轉化使得react組件可以獲取到全局狀態以及router實例以滿足路由跳轉以及鑒權相關需求。

以下是其支持的轉化特性:

圖片

同一項目下混合開發?

嗯,看似一切都解決了,但其中有一些無法避免的問題:首先,React與Vue的依賴以及編譯babel生態是有區別的,如果有同一依賴,需要找到兩個技術棧同時適配的版本,并且構建成本成倍提升,在本地開發與線上構建中需要單獨拿出精力優化,一個文件夾下同時存在.vue與.tsx,結構雜亂,不利于維護。

三、更絲滑的技術棧遷移

3.1 頁面級微前端對于技術棧遷移以及提效的局限性

提到技術棧遷移,我們首先想到的是微前端,例如QianKun、Single SPA、Micro App,他們能做到在平臺內部根據大的業務模塊做項目級的分拆,并且與技術棧無關。本質上解決了項目維護成本與構建優化成本隨著項目不斷提升的問題。

注意,頁面級的微前端雖然能做跨技術棧開發,但是只能做增量改造,新的頁面我們可以使用內部統一的技術棧,但是在業務迭代中有相當多的需求是基于舊有頁面進行改造,我們還是需要基于以往的技術棧開發,除非是全量重構。那么按照常規方式是,單獨抽時間對核心模塊做遷移,其中的阻礙可想而知,業務在不斷推進,而重構對于用戶來說無感,并且還需要測試資源回歸,不管對于業務提升以及結果產出短期來看都是沒有明顯正向作用的。所以,結果只能是舊有模塊維持原狀,技術棧統一任重道遠。

圖片

3.2 Web components?

Web components 是 chrome推動的原生組件API,即不依賴技術棧開發組件,實現組件的高復用率。在作為組件級共享上是一個比較好的方案,但由于是原生API,狀態管理,組件通信需要開發者自己實現,由于技術棧遷移這個場景不管是被遷的還是遷入的都是技術棧相關,對于組件轉化會有較高的成本。

3.3 Module Federation的代碼塊級引入

MF本質上是webpack提供的一種能力,可以使得開發者在一個 JavaScript 應用中動態加載并運行另一個 JavaScript 應用的代碼,并實現應用之間的依賴共享。具體原理可參考Module Federation原理剖析[4]。

這樣我們就能對于舊有的vue項目在減少重構成本的前提下做漸進式的遷移。

圖片

基于前面微前端與模塊化的對比,考慮到模塊邏輯的復雜度與遷移成本,我們決定使用基于Module Federation的模塊化開發,這使得復雜模塊的遷移更加平滑,并且能夠平衡同模塊下技術遷移與業務開發的節奏,兩者盡量松耦合,做到漸進式遷移。下面將介紹實現模塊化遷移方案的關鍵點。

四、實現方案

圖片

4.1 組件轉換

首先我們需要將開發者的react組件轉換為vue組件,在每一次react micro項目變動時,我們需要遍歷該項目并找到.jsx/.tsx的文件,并聲明其對應的.vue文件,.vue文件里面做了什么呢?它會基于vuereact引入react文件,并透傳變量與方法,這些.vue文件用戶是沒有感知的,因此它們會存放在臨時目錄中(.mfveat)。

圖片

.vue文件的代碼模板如下:

圖片

4.2 生成組件expose映射

上節提到的.vue文件會生成expose組件地址到文件地址映射,以被Module Federation使用。

圖片

4.3 Module Federation動態注入

大家都知道Module Federation是寫在構建配置文件里的,exposes決定了這個微應用暴露哪些組件,但是在本地開發時我們業務代碼以及導出是變動的,如果每次修改expose都得通過重啟工程的方式效率是很低的。

圖片

如何解決動態expose的問題呢?這里就要講到Module Federation Plugin的組成,核心是ContainerPlugin(remote端)與ContainerReferencePlugin(host),方案是在基于ContainerPlugin上層封裝一個插件mf-veact-plugin,支持expose傳入,在微項目構建完成后按照以上步驟生成expose.json,然后動態注入mf-veact-plugin。

圖片

以上3步就構成了跨技術棧開發的構建全鏈路,用戶只需關心react業務代碼,然后通過Module Federation Host在主項目中引入即可。

五、開發體驗

5.1 刷新監聽與MF引入

由于MF與主項目是獨立的,那么用戶在改了React代碼后如何觸發主項目的刷新呢?在每一個子項目編譯完成后,webpack插件會向主項目寫入更新唯一標識,主項目循環監聽唯一標識,變化時觸發頁面刷新,最近加入了熱重載保證子項目與主項目通信順滑。

webpack-dev-server的作者在近期版本中更新了熱重載功能,無需手動監聽重載。

圖片

5.2 UI庫樣式降級,避免全局污染

MF做到了組件級微前端,同時又帶來了一些問題,由于各個項目可能使用的不同的UI庫,而UI庫本身會有全局樣式的改造,不可避免的會影響其他項目UI庫的樣式,而MF的組件粒度有很難做到如頁面微前端一樣的項目樣式隔離。

這里拿Antd舉例,Antd中的global.less會對全局樣式做格式化,在社區中已經有很多討論,但直到今天也沒有進展。因為 Ant-Design 是一套設計語言,所以 antd 會引入一套 fork 自normalize.css[4]的瀏覽器默認樣式重置庫global.less。

因此這里的方案是,「收斂 base.less,并保證外部的全局樣式無法輕易覆蓋 antd 的樣式」,從編譯角度解決樣式污染問題。

1)Antd-vue 樣式污染問題

圖片

六、總結

本文簡要介紹了前端領域在邁出技術棧統一這一步后經歷的痛點以及挑戰,分別從遷移粒度以及使用場景兩個方面針對微前端以及模塊化這兩類開發模式進行了對比,并且從解決用戶開發痛點出發闡述架構如此設計的原因。最后列出了在模塊化遷移或開發過程中需要注意的問題并給出了解決方案。主旨還是希望能夠以更低的成本與更好的開發體驗推動技術棧統一與遷移。

模塊化開發是前端領域離不開的話題,解決技術棧統一問題僅是其一個分支,同時模塊化代碼隔離與非版本化改動也是我們未來要解決優化的方向,組件、平臺模塊的自動化共享一直在被提及,希望本次方案探索能夠給大家帶來一些靈感,也歡迎大家在前端平臺體系組件通用化這一方向上一起交流討論。

參考文章:

[1]https://github.com/devilwjp/vuereact-combined

[2]https://github.com/devilwjp/vuereact-combined/blob/master/src/applyReactInVue.js

[3]https://github.com/devilwjp/vuereact-combined

[4]https://juejin.cn/post/6895324456668495880

[5]《如何優雅地徹底解決 antd 全局樣式問題》

https://juejin.cn/post/6844904116288749581

[6]《Module Federation原理剖析》https://juejin.cn/post/6895324456668495880

責任編輯:武曉燕 來源: 得物技術
相關推薦

2022-04-13 08:04:40

項目應用程序代碼

2019-08-28 16:18:39

JavaScriptJS前端

2017-05-18 11:43:41

Android模塊化軟件

2023-12-25 22:24:36

C++模塊Module

2025-07-10 03:00:00

2020-10-09 06:40:53

惡意軟件

2020-09-17 10:30:21

前端模塊化組件

2020-05-12 08:39:50

JavaScript工具技術

2020-09-18 09:02:32

前端模塊化

2010-06-10 12:10:23

嵌入式IPv6協議棧

2022-09-05 09:01:13

前端模塊化

2021-07-15 06:43:11

Module Fede開發場景

2016-10-09 11:03:41

Javascript模塊化Web

2022-09-21 11:51:26

模塊化應用

2017-05-18 10:23:55

模塊化開發RequireJsJavascript

2013-08-20 15:31:18

前端模塊化

2022-03-11 13:01:27

前端模塊

2015-10-10 11:29:45

Java模塊化系統初探

2010-05-28 10:31:28

模塊化IT

2021-07-14 09:26:51

UPS電源模塊化
點贊
收藏

51CTO技術棧公眾號

欧美成人一区二区三区高清| 日日噜噜噜噜久久久精品毛片| 国产成人精品白浆久久69| 天堂美国久久| 日韩一区二区三区电影在线观看| 日本在线观看一区二区三区| jizz国产在线| 国产精品99一区二区三| 欧美一卡二卡在线观看| 精品一二三四五区| 男人的天堂在线| 久久久亚洲人| 久久香蕉国产线看观看av| 无码人妻aⅴ一区二区三区玉蒲团| 国产白丝在线观看| 国产视频一区二区在线观看| 国产日韩精品电影| 久久精品女人毛片国产| 91九色鹿精品国产综合久久香蕉| 无吗不卡中文字幕| 亚洲精品人成| 韩国av免费在线观看| 久久aⅴ国产紧身牛仔裤| 中文字幕精品国产| 人妻av一区二区三区| 成人性教育av免费网址| 《视频一区视频二区| 久久riav| 99在线无码精品入口| 久久不射网站| 久久99精品国产99久久6尤物| 网站免费在线观看| 宅男噜噜噜66国产精品免费| 亚洲超碰97人人做人人爱| 四虎永久在线精品免费一区二区| 不卡视频免费在线观看| 日韩电影免费在线| 久久久久成人网| 五月天免费网站| 日日天天久久| 欧美大片在线观看一区二区| 手机看片福利日韩| a天堂资源在线| 一区在线观看视频| 欧美极品视频一区二区三区| 成人av手机在线| 久久99精品国产.久久久久久| 欧美精品videossex88| 亚洲天堂精品一区| 精品国产91| 日韩精品极品毛片系列视频| 国产精品二区视频| 亚洲爽爆av| 欧美性猛交一区二区三区精品| 久久久久免费看黄a片app| 福利片在线观看| 91在线一区二区三区| 99高清视频有精品视频| 一区二区国产欧美| 日本伊人午夜精品| 国产精品成久久久久三级| 久久国产在线视频| 欧美激情四色| 麻豆乱码国产一区二区三区| 一级免费黄色录像| 日韩欧美大片| 中文字幕精品av| 中字幕一区二区三区乱码| 亚洲美女15p| 日韩av网址在线| 制服丝袜第一页在线观看| 亚洲综合影院| 欧美成人欧美edvon| 男人操女人下面视频| 久久9999免费视频| 欧美一级欧美三级| www.黄色网| 91久久精品无嫩草影院| 日韩欧美一区中文| 亚洲一区和二区| 综合久久伊人| 日韩网站在线看片你懂的| 中文字幕在线观看91| 成功精品影院| 亚洲国产精品一区二区三区| 捆绑凌虐一区二区三区| 亚洲精品播放| 伊人伊人伊人久久| 亚洲色图100p| 中文字幕亚洲综合久久五月天色无吗''| 日韩中文在线不卡| 真实国产乱子伦对白在线| 黄色综合网站| 热99久久精品| 在线免费观看日韩视频| 国产中文字幕精品| 国产一区二区不卡视频| 免费在线稳定资源站| 亚洲国产激情av| 中国一级黄色录像| 波多野结衣在线播放| 精品日韩美女的视频高清| 国产视频在线视频| 超碰国产精品一区二页| 欧美va在线播放| 免费在线观看你懂的| 久久资源中文字幕| 欧美激情视频播放| 9i精品福利一区二区三区| 寂寞少妇一区二区三区| 国产精品乱子乱xxxx| 国产玉足榨精视频在线观看| 亚洲欧美偷拍三级| 男人操女人免费软件| 国产精品xxx| 亚洲高清一二三区| 国产又粗又长免费视频| 伊人久久久大香线蕉综合直播 | 极品少妇一区二区三区| 国产a∨精品一区二区三区不卡| 国产一区二区在线不卡| 国产一区二区三区久久久| 久久av一区二区三区亚洲| 黄色网页在线免费观看| 亚洲综合一区二区三区| 国产精品视频中文字幕| 国产精品视屏| 精品国产一区二区三区久久| 日韩免费不卡视频| 精品午夜久久福利影院| 精品欧美日韩在线| 伊人影院在线视频| 欧美在线视频全部完| 五月天丁香社区| 久久久人成影片免费观看| 91av视频在线播放| 亚洲精品一区二区三区四区| 国产精品美女久久久久久久| 色综合久久久久无码专区| 国产精品一区免费在线 | 二区三区在线视频| 亚洲图片激情小说| 九九视频精品在线观看| 秋霞影视一区二区三区| 欧美人与性动交| 亚洲一级片免费看| 国产日韩v精品一区二区| 欧美亚洲日本一区二区三区| 精品视频一区二区三区在线观看| 亚洲桃花岛网站| 久久久久免费看| 国产综合久久久久久久久久久久| 亚洲国产成人不卡| 成人软件在线观看| 亚洲精品日韩欧美| 国产精品美女久久久久av爽| 成人一区二区在线观看| 小泽玛利亚av在线| 欧美激情三级| 久热精品视频在线观看| 一级做a爰片久久毛片16| 中文久久乱码一区二区| 久久久久久久片| 国产精品免费不| 全球成人中文在线| 国产露出视频在线观看| 日本大香伊一区二区三区| 午夜在线观看一区| 日韩电影免费一区| 视频一区视频二区视频三区高| 欧美性片在线观看| 丝袜情趣国产精品| 亚洲综合精品在线| 亚洲丝袜制服诱惑| ass极品水嫩小美女ass| 欧美激情一区| 狠狠色噜噜狠狠色综合久| 岛国av在线播放| 亚洲精品视频中文字幕| 无码人妻av一区二区三区波多野 | 日韩中文首页| 成人黄色免费看| 性欧美ⅴideo另类hd| 欧美大片一区二区三区| 日韩成人免费在线观看| 91麻豆成人久久精品二区三区| 亚洲午夜无码av毛片久久| 国产一区二区三区四区五区 | 亚洲精品8mav| japansex久久高清精品| 九色精品美女在线| 香港三日本三级少妇66| 五月天一区二区三区| 亚洲一区二区观看| 美国三级日本三级久久99| 亚洲av综合色区| 国产丝袜一区| 国产精品第一第二| 一区二区三区伦理| 天堂社区 天堂综合网 天堂资源最新版| 国产精品久久免费看| 成人毛片一区二区| 亚洲精品蜜桃乱晃| 国产精品大片wwwwww| 国产秀色在线www免费观看| 日韩美一区二区三区| 毛片在线免费视频| 中文无字幕一区二区三区 | 一本大道综合伊人精品热热| 91在线无精精品白丝| 国产一区二区三区免费看| 亚洲精品无码国产| 不卡一区2区| 国产精品久久国产精品| 九色porny自拍视频在线播放| 在线观看国产精品日韩av| 性一交一乱一色一视频麻豆| 在线日韩av片| 日韩欧美国产成人精品免费| 99久久精品国产一区二区三区 | 国内毛片毛片毛片毛片毛片| 成人h精品动漫一区二区三区| 校园春色 亚洲色图| 最新日韩av| 中文字幕日韩精品久久| 国产一区在线电影| 91精品视频免费观看| 欧美久久天堂| 久久国产色av| 成人精品福利| 亚洲国产天堂久久综合网| 国产日韩欧美一区二区东京热| 色综合久久久久综合体| 精品无码免费视频| 综合久久综合久久| 中文字幕网站在线观看| av不卡一区二区三区| 日韩精品在线播放视频| 美女在线一区二区| 99久久国产宗和精品1上映 | 久久亚洲a v| 色婷婷色综合| 日韩av影视| 九九久久婷婷| 久久国产主播精品| 六月丁香久久丫| 国产高清一区二区三区| 精品午夜视频| 成人免费视频a| 秋霞国产精品| 国产精品电影网站| 亚洲成人av观看| 国产伦精品免费视频| 九七电影院97理论片久久tvb| 国产精品免费在线免费| 欧美一级做a| 亚洲一区二区在线播放| 香蕉大人久久国产成人av| 91麻豆蜜桃| 久久365资源| 日韩高清三级| 久久国产影院| 91视频 - 88av| 国产精品嫩草99av在线| 妺妺窝人体色www在线观看| 老色鬼精品视频在线观看播放| 中文字幕第38页| 国产在线视频不卡二| 无码人妻一区二区三区精品视频| 成人高清免费观看| 六月婷婷七月丁香| 中文字幕国产一区| 久久久久久久久毛片| 欧美日韩午夜视频在线观看| 无码人妻精品一区二区三区蜜桃91| 欧美艳星brazzers| www.天堂av.com| 亚洲欧洲一区二区三区久久| 午夜毛片在线| 欧美美最猛性xxxxxx| 蜜桃在线视频| 国产日韩在线精品av| 中文字幕日韩在线| 欧美一区二区三区电影在线观看| 天天久久综合| 中文字幕日本最新乱码视频| 蓝色福利精品导航| 中文字幕在线播放视频| 国产精品色一区二区三区| 久久久全国免费视频| 欧美亚一区二区| 亚洲免费视频网| 在线播放日韩av| 国产99re66在线视频| 国产精品第三页| 国产精品流白浆在线观看| 亚洲女人毛片| 国产欧美一区二区色老头| 精品综合久久久久| wwww国产精品欧美| 青青草激情视频| 欧美无砖专区一中文字| 亚洲欧美高清视频| 日韩在线观看免费网站| 国产精欧美一区二区三区蓝颜男同| 91色琪琪电影亚洲精品久久| 蜜乳av综合| 亚洲一区二区三区av无码| 麻豆成人在线观看| 日本高清www| 亚洲大片在线观看| www.黄色片| 久久精品国产亚洲| 国产综合av| 免费av一区二区三区| 在线播放日韩| 日本高清免费观看| 亚洲国产岛国毛片在线| 亚洲va在线观看| 亚洲国产毛片完整版| 性欧美1819sex性高清大胸| 国产美女久久久| 欧洲杯足球赛直播| av免费中文字幕| 91在线porny国产在线看| 久久久综合久久| 日韩一区二区三区视频在线 | 欧美一级免费视频| 给我免费播放日韩视频| 亚洲激情免费视频| 国产一区二区三区在线看麻豆| 91视频免费在观看| 91国产成人在线| 国产精品99999| 日韩暖暖在线视频| 国产99久久久国产精品成人免费| 分分操这里只有精品| 岛国一区二区三区| 久久综合色综合| 欧美成人aa大片| 污视频网站免费在线观看| 91亚洲国产成人久久精品网站| 93在线视频精品免费观看| 国产一伦一伦一伦| 综合欧美一区二区三区| h狠狠躁死你h高h| 久久99久久亚洲国产| www.丝袜精品| 男女猛烈激情xx00免费视频| 成人av在线资源网站| 国产成人精品片| 亚洲欧美福利视频| 精品国模一区二区三区| 亚洲一区二区在线看| 精油按摩中文字幕久久| 东方av正在进入| 日韩精品中文字幕一区 | 亚洲不卡在线观看| 五月色婷婷综合| 国产成人极品视频| 色999日韩| 色婷婷综合在线观看| 亚洲一区二区黄色| 日韩大胆人体| 国产欧美日韩中文字幕在线| 亚洲中无吗在线| 亚洲精品乱码久久久久久蜜桃欧美| 婷婷丁香激情综合| 国产三级视频在线| 91亚洲精品一区| 日韩亚洲国产欧美| xxxx日本黄色| 欧美一区二区三区人| 岛国av免费在线观看| 日本视频一区二区不卡| 国产一区二区三区在线观看免费 | 黄色亚洲在线| 亚洲欧美va天堂人熟伦| 日韩一区二区三区四区五区六区| 狠狠躁少妇一区二区三区| 视频一区三区| 成人黄页在线观看| 日本一区二区三区久久| 欧美成人午夜激情在线| 亚洲激情播播| www.偷拍.com| 色先锋久久av资源部| 91麻豆国产福利在线观看宅福利| 久久草视频在线看| 国产伦精品一区二区三区在线观看| 全部毛片永久免费看| www.欧美三级电影.com| 久久av国产紧身裤| 亚洲综合av在线播放| 精品女同一区二区三区在线播放| 午夜视频在线免费观看| 美女主播视频一区| 国产河南妇女毛片精品久久久 | 欧美一卡二卡三卡| 日本在线精品|