精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

香蕉成人啪国产精品视频综合网| 日产国产欧美视频一区精品| 日韩一级完整毛片| 欧美中文字幕在线观看视频 | 男女精品网站| 日韩中文字幕免费看| 免费国偷自产拍精品视频| 国产激情视频在线看| 日本一区二区三区免费乱视频| 成人妇女免费播放久久久| 久久99久久98精品免观看软件| 日韩成人午夜| 欧美顶级少妇做爰| 久在线观看视频| 日韩大片在线永久免费观看网站| 成人国产视频在线观看| 国产精品久久久久久av福利| 久草视频手机在线观看| 精品国产日韩欧美| 精品精品欲导航| 亚洲77777| 男人天堂视频在线观看| 中文字幕日本乱码精品影院| 精品一区2区三区| 91成品人影院| 久久久久99| 久久露脸国产精品| 小早川怜子一区二区的演员表| 日韩av影院| 日韩欧美久久久| 久久久国产欧美| 九色porny自拍视频在线观看 | 一区二区三区国产福利| 天天色综合久久| 国产一区二区不卡| 国产免费观看久久黄| 亚洲欧美自拍视频| 精品999成人| 久久综合免费视频影院| 手机毛片在线观看| 在线观看国产亚洲| 精品人妻中文无码av在线| 日韩毛片一区| 精品人伦一区二区三区蜜桃网站| 国产 欧美 日韩 一区| 免费在线观看av| 国产女主播在线一区二区| 精品国产一区二区三区麻豆小说| 99久久精品无免国产免费| 免费高清在线一区| 国产精品av在线| 日韩人妻精品中文字幕| 免费日韩一区二区| 欧美中在线观看| 亚洲精品午夜国产va久久成人| 亚洲午夜黄色| 欧美黄色性视频| 久草免费在线观看视频| 欧美日韩国产免费观看| 九九精品在线视频| 激情综合五月网| 亚洲午夜一级| 91sa在线看| 国产又大又黄视频| 亚洲永久免费| 国产精品盗摄久久久| www.五月婷婷.com| 蓝色福利精品导航| 91在线精品视频| 亚洲av无码一区二区三区dv| 国产suv精品一区二区883| 99久久一区三区四区免费| 人妻丰满熟妇av无码区hd| 成人激情午夜影院| 久久综合福利| www亚洲人| 亚洲同性gay激情无套| 草草草视频在线观看| 丁香花在线观看完整版电影| 五月天一区二区| 免费日韩中文字幕| 欧美天堂一区| 日韩精品一区二区三区视频播放| 美女黄色一级视频| 亚洲国产精品嫩草影院久久av| 亚洲色图18p| 日本裸体美女视频| 欧美久久一级| 欧美一级在线播放| 亚洲一区二区天堂| 国产一区二区福利视频| 韩国成人av| av电影在线观看一区二区三区| 亚洲精品第1页| 99热在线这里只有精品| 久久免费资源| 亚洲精品久久久久久久久| 韩国女同性做爰三级| 亚洲天堂免费| 2019日本中文字幕| 888奇米影视| 成人18精品视频| 亚洲一区二区三区精品动漫| 黑人另类精品××××性爽| 91福利精品第一导航| 免费网站在线观看黄| 欧美性生活一级片| 久久久精品2019中文字幕神马| 影音先锋亚洲天堂| 国产一区二区日韩精品| 欧美精品中文字幕一区二区| 宅男在线观看免费高清网站| 一本大道久久a久久精品综合| 在线观看视频在线观看| 久久91精品| 国内精品久久久久久| 一级成人免费视频| 久久夜色精品国产欧美乱极品| 最新黄色av网站| 97成人超碰| 精品视频在线导航| 久久久久久久久久久97| 蜜臀久久99精品久久久久久9| 精品毛片久久久久久| 中文在线字幕免费观看| 欧美日韩综合色| 国产亚洲无码精品| 国产精品a久久久久| 成人精品一区二区三区电影免费 | 欧美理论影院| 欧美精品一区二区在线观看| 欧美特级一级片| 久久精品国产99国产| 欧美一级片免费观看| av美女在线观看| 欧美成人三级电影在线| 亚洲不卡在线播放| 日韩av一级片| 欧美性xxxx69| 日本在线影院| 亚洲国产又黄又爽女人高潮的| 成年人一级黄色片| 精品在线播放午夜| 亚洲国产成人不卡| 欧美日韩精品免费观看视欧美高清免费大片| 欧美精品一区二区精品网| 国产高潮国产高潮久久久91| 久久超碰97中文字幕| 亚洲国产精品视频一区| 日韩在线短视频| 亚洲欧美日韩直播| av手机天堂网| 国产欧美一区二区精品秋霞影院| 高清在线观看免费| 人妖一区二区三区| 538国产精品视频一区二区| 污污视频在线观看网站| 欧美日韩国产在线播放| 中文字幕高清视频| 久久综合婷婷| 视频一区国产精品| 欧美韩国日本| 超碰91人人草人人干| 国产精品日韩无码| 亚洲码国产岛国毛片在线| 激情成人在线观看| 国产一区激情| 久久久久久一区| 欧美艳星kaydenkross| 国产一区二区免费| 亚洲午夜激情视频| 亚洲美女精品一区| 日本一区二区在线观看视频| 亚洲欧美日韩精品一区二区| 欧美性大战久久久久| 国产精品诱惑| 久久精品国产久精国产一老狼| 国产视频在线观看免费| 亚洲成人午夜电影| 国产精品20p| 精品一区二区在线看| 欧美中文字幕在线观看视频 | 精品一区二区三区在线观看| 2021国产视频| 日日狠狠久久偷偷综合色| 国产精品极品在线| 自由的xxxx在线视频| 国产视频亚洲视频| ,亚洲人成毛片在线播放| 亚洲国产日韩一级| 欧美激情视频二区| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | www男人的天堂| 日韩欧美国产黄色| av激情在线观看| 久久夜色精品一区| 性xxxxxxxxx| 日韩av一区二区三区四区| 国产午夜精品视频一区二区三区| 丝袜美腿综合| 亚洲999一在线观看www| 高清不卡av| 欧美成aaa人片免费看| 日本视频在线观看一区二区三区| 欧美日韩大陆一区二区| 日本一级淫片色费放| 欧美国产日韩精品免费观看| 蜜臀av粉嫩av懂色av| 久久精品国内一区二区三区| 成人一区二区免费视频| 青青草原综合久久大伊人精品 | 日本亚洲不卡| 亚洲xxx视频| 91在线亚洲| 欧美一级淫片丝袜脚交| 四虎影院观看视频在线观看| 一区二区三区动漫| 五月激情六月婷婷| 这里是久久伊人| 青青视频在线免费观看| 亚洲一级二级在线| xxxx日本少妇| 国产精品久久久久久户外露出| 亚洲中文字幕一区| 国产激情视频一区二区在线观看 | 日韩精品在线视频| 亚洲国产日韩在线观看| 91超碰这里只有精品国产| 日本免费精品视频| 欧美日韩亚洲激情| 国产亚洲自拍av| 一个色在线综合| 国产67194| 亚洲天堂久久久久久久| 一级二级黄色片| 国产日产精品一区| 国产精品1000部啪视频| 成人一区二区三区中文字幕| 五月天中文字幕在线| 美日韩一级片在线观看| 激情视频免费网站| 老司机精品视频网站| 亚洲午夜精品久久久久久人妖| 一本久久综合| 日本国产在线播放| 99精品国产一区二区青青牛奶| 成人午夜免费在线视频| 中国成人一区| 青青草综合视频| 欧美极品一区二区三区| 大桥未久一区二区三区| 久久久久久久久久久久久久| 男同互操gay射视频在线看| 亚洲啊v在线观看| 国产福利片一区二区| 91精品国产麻豆国产在线观看| 亚洲一区高清| 欧美日韩专区| 欧美成人精品免费| 亚洲视频二区| 欧美激情成人网| 美女精品自拍一二三四| 日韩成人精品视频在线观看| 国产一区二区三区香蕉| 性猛交╳xxx乱大交| 99在线视频精品| 亚洲永久精品ww.7491进入| 国产欧美一区二区三区在线老狼| 欧日韩不卡视频| 一区二区免费在线播放| 国产91av视频| 欧美中文字幕一二三区视频| 91在线视频国产| 精品国产成人在线影院| 日本在线丨区| 精品国产一区二区三区四区在线观看 | 天天天天天天天干| 91麻豆精品91久久久久同性| 国产三级按摩推拿按摩| 亚洲成人av在线| 可以直接在线观看的av| 久久精品国产清自在天天线| 好久没做在线观看| 青青久久aⅴ北条麻妃| 国产精品传媒麻豆hd| 动漫精品视频| 国产亚洲一区| 女女百合国产免费网站| 亚洲欧美日韩在线观看a三区| 在线观看免费视频高清游戏推荐| 国产91精品精华液一区二区三区| 中文字幕xxx| 亚洲欧美日韩久久| www.com国产| 欧美一区永久视频免费观看| 婷婷五月综合久久中文字幕| 久久精品91久久香蕉加勒比| 大桥未久在线视频| 91久久综合亚洲鲁鲁五月天| 天堂日韩电影| 久久久久久久久网| 三级不卡在线观看| 香蕉久久久久久av成人| 国产蜜臀av在线一区二区三区| 国产午夜精品一区二区理论影院| 欧美日韩一级视频| 五月婷婷六月色| 欧美巨乳美女视频| 欧美日韩五区| 久久av免费观看| 午夜欧美理论片| 中文字幕成人在线视频| 久久久五月婷婷| www.毛片.com| 精品久久久久久综合日本欧美| 欧美日韩在线资源| 日本中文字幕久久看| 国产毛片久久久| 精品久久久无码人妻字幂| 蜜桃视频免费观看一区| 成年人网站免费在线观看| 亚洲国产精品视频| 99热这里只有精| 日韩中文字幕视频| 成人网ww555视频免费看| 国内精品二区| 日韩午夜av| 最新版天堂资源在线| 一区二区三区日韩精品视频| 亚洲视频一区在线播放| 国产午夜精品免费一区二区三区| 午夜久久中文| 久久riav二区三区| 亚洲精品资源| www.88av| 欧美日韩一二三四五区| 偷拍自拍在线视频| 69影院欧美专区视频| 九色丨蝌蚪丨成人| 精品少妇在线视频| 成人免费三级在线| 国产福利久久久| 精品剧情在线观看| 国产网红在线观看| 国产欧美亚洲日本| 亚洲日本久久| 极品白嫩丰满美女无套| 黑人巨大精品欧美一区二区三区 | 99热亚洲精品| 成人激情动漫在线观看| 国产在线拍揄自揄拍无码视频| 日韩美女天天操| 超碰97国产精品人人cao| 国产欧美韩日| 亚洲一区二区成人| 中国毛片在线观看| 欧美又粗又大又爽| 在线看免费av| 亚洲xxxx18| 亚洲欧洲一区| 一级性生活大片| 在线看国产一区二区| 91av资源在线| 91在线观看欧美日韩| 黄色在线成人| 国产福利短视频| 在线观看视频一区二区欧美日韩| 色多多视频在线观看| 18成人免费观看网站下载| 精品电影一区| 国精品无码人妻一区二区三区| 欧美性受极品xxxx喷水| 黄色网在线播放| 国产亚洲欧美另类一区二区三区| 免费国产自线拍一欧美视频| 天堂av网手机版| 日韩欧美一级在线播放| 一区二区精品伦理...| 99re99热| 91啪亚洲精品| 国产精品欧美激情在线| 8x拔播拔播x8国产精品| 日韩免费一区| 亚洲一区二区三区四区av| 色乱码一区二区三区88| 高潮毛片在线观看| 精品蜜桃一区二区三区| 久久精品av麻豆的观看方式| 日韩免费黄色片| 中文日韩在线视频| 成人免费在线电影网| 欧美伦理片在线看| 亚洲一区二区三区在线| 川上优的av在线一区二区| 91久久偷偷做嫩草影院| 视频一区二区欧美| 日本免费一二三区| 日韩在线观看视频免费| 日韩深夜福利| 中文字幕无人区二|