国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當前位置:首頁 > 科技  > 軟件

基于模塊聯邦與大倉模式的商家巨石應用拆分實踐

來源: 責編: 時間:2023-08-20 23:16:44 667觀看
導讀一、背景商家后臺前端代碼目前代碼量達到十萬級,每個迭代團隊需要在同一倉庫中迭代幾十個需求,在日漸龐大的巨石應用下如此活躍的迭代,開發效率與構建效率上給我們帶來了一些挑戰,我們需要優化以下幾點:代碼構建體量大,隨著

lI828資訊網——每日最新資訊28at.com

以上的組件代理插件實質上是用于做MF組件加載管理的chrome插件,可以控制基座應用加載的模塊是線上的還是本地。lI828資訊網——每日最新資訊28at.com

lI828資訊網——每日最新資訊28at.com

代理方案如下lI828資訊網——每日最新資訊28at.com

lI828資訊網——每日最新資訊28at.com

  • 用戶首次進入線上測試環境,會加載遠程應用入口文件,代理插件會將入口文件根據用戶配置轉發至對應的本地地址。
  • 進入路由訪問,由于上一步對遠程應用入口做了代理,加載的模塊被代理至本地,這樣用戶就可以在線上訪問到本地頁面,實現本地開發。
  • 在線上基座應用與本地應用間建立websocket鏈接,本地應用代碼更改后通知線上基座應用刷新頁面。

下面是具體實現:lI828資訊網——每日最新資訊28at.com

generateRedirectUrl = (details: UrlDetailsType) => {    if (details.url.includes(MICRO_ONLINE_LOAD_PATH)) {      const redirectUrl = this.generateDefaultProxyUrl({ originUrl: details.url })      if (redirectUrl) {        console.log('觸發代理', `${details.url}代理至${redirectUrl}`)        this.checkMicroAppStatus({ originUrl: details.url, redirectUrl })        return {          redirectUrl,        }      }    }    if (details.url.includes('t1-dev.dewu:98')) {      console.log("details.url.includes('t1-dev.dewu:98')", details.url);      const redirectUrl = this.generateOnlineUrlByLocal({ originUrl: details.url })      if (redirectUrl) {        console.log('觸發代理', `${details.url}代理至${redirectUrl}`)        this.checkMicroAppStatus({ originUrl: details.url, redirectUrl })        return {          redirectUrl,        }      }    }  }
  • 文件內容代理為本地文件后,此時對應的模塊加載path還是會加載線上路由,這里同樣需要做內容代理。
  • 由于是基于線上測試環境開發,本地開發的頁面不僅需要在線上展示,并且本地代碼更新后需要觸發線上頁面更新,這是必不可少的步驟,我們基于websocket將本地與線上進行連接。
  • 不同子應用動態設置socketUrl與PingUrl。
function getHost() {  if (process.env.SOCKET_SERVER) {    return new URL(process.env.SOCKET_SERVER);  }  return location;}function getSocketUrl() {  let h = getHost();  let host = h.host;  host = `localhost:${PORT}`;  const isHttps = h.protocol === 'https:';  return `ws://${host}`;}function getPingUrl() {  const h = getHost();  return `${h.protocol}//${h.host}/__umi_ping`;}
  • 建立websocket連接,并定時觸發連接檢測。
let pingTimer = null;let isFirstCompilation = true;let mostRecentCompilationHash = null;let hasCompileErrors = false;let hadRuntimeError = false;const pingUrl = getPingUrl();if (!window[`${APP_NAME}UmiEntry`]) {  const socket = new WebSocket(getSocketUrl(), 'webpack-hmr');  socket.addEventListener('message', ({ data }) =>    __awaiter(void 0, void 0, void 0, function* () {      data = JSON.parse(data);      if (data.type === 'connected') {        console.log(`[webpack] connected.`);        // proxy(nginx, docker) hmr ws maybe caused timeout,        // so send ping package let ws keep alive.        pingTimer = setInterval(() => socket.send('ping'), 30000);      } else {        handleMessage(data).catch(console.error);      }    }),  );}
  • 本地需求開發共享部署態代碼的store與路由跳轉。
  • 需求開發完成后進行單個應用部署,由于是本地代理,不影響測試訪問。

基于模塊聯邦

前面的代理機制依賴于MF的遠程加載,模塊聯邦加載機制可參考「掘金」平臺中題目為“最詳細的Module Federation的實現原理講解” 這篇文章。基于模塊聯邦的微前端落地方案可以參考之前的一篇文章 基于Module Federation的模塊化跨棧方案探索。lI828資訊網——每日最新資訊28at.com

lI828資訊網——每日最新資訊28at.com

本地與部署態基座應用通過MF方案加載子應用,同時部署態新增動態加載保證遠程組件的實時性,在加載入口文件處進行監控告警。lI828資訊網——每日最新資訊28at.com

lI828資訊網——每日最新資訊28at.com

lI828資訊網——每日最新資訊28at.com

加載態依賴chrome插件做動態代理,實現本地與其他測試環境構建代碼的動態切換,同時子應用與部署態代碼建立websocket代碼更新鏈接,在子應用更新代碼時,實時刷新線上頁面。同時支持端口的動態配置,一鍵關閉。lI828資訊網——每日最新資訊28at.com

效果

以上介紹加載鏈路保證了構建部署提速與功能的完整,較好的解決了應用拆分功能不完備問題。本次架構優化將構建由15s減少至2.0s。業務需求部署速度由8min減少至2min。lI828資訊網——每日最新資訊28at.com

四、應用拆分

大倉模式

應用拆分只是目的,要實現這個目標不僅僅要做拆分,對于商家后臺來說各個應用間的復用同等重要,由于是業務解耦,這意味著各應用間存在更多可復用的功能與模塊。lI828資訊網——每日最新資訊28at.com

lI828資訊網——每日最新資訊28at.com

同時不僅是商家后臺的部分模塊也會在交易后臺使用,既要保證應用業務的解耦,同時要保證組件充分復用,大倉模式是目前最合適的方案。lI828資訊網——每日最新資訊28at.com

大倉模塊化共享

由于商家后臺各個子應用由于同屬商家整條業務鏈路,存在眾多可共用的組件和模塊,而npm發布模式本身給業務組件與業務項目帶來了一定隔離性,同時因為各子應用業務上存在關聯,很多大型模塊需要被多個子應用引入,而這些大型模塊的迭代通常比較頻繁,同時需要對業務請求進行封裝。這里我們使用了基于大倉模式的源碼引入以達到代碼共用的目的。組件開發鏈路如下:lI828資訊網——每日最新資訊28at.com

lI828資訊網——每日最新資訊28at.com

這里體現的是源碼引入的方式,在構建態進行通用模塊的打包構建,這一點目前能跑通的背景是商家后臺本身是一個完整的應用,現有的模式同樣是一個組件被多個模塊所使用,同時測試階段也是全量回歸。以下是大倉組件基礎鏈路:lI828資訊網——每日最新資訊28at.com

  1. 組件構建發布使用標準的cli規范。
  2. 在提交MR節點與發布節點新增自動化卡口。
  3. 通過依賴分析自動化檢測單測運行范圍。
  4. 組件發布時發布通知,提醒組件使用者,并運行業務單測。

之后會對該部分做詳細介紹。lI828資訊網——每日最新資訊28at.com

五、總結與思考

單應用構建->單頁面構建?

以上主要講述了MF方案如何將本地結合線上開發,這里僅對微應用級別做了解耦,基于MF的模塊化實現,由于remoteMicro實質上是創建了一個引用路徑到require函數的映射然后代理至本地,那么對于不同模塊,在能力上是具備模塊化代理的能力的,基于目前MF按需構建(僅構建暴露出去的組件模塊)的規則,我們可以對某個模塊的映射對象里的xxx.async.js做代理。這樣就可以實現頁面粒度的按需構建,在部署構建提速上有很大潛力。lI828資訊網——每日最新資訊28at.com

lI828資訊網——每日最新資訊28at.com

本篇文章主要介紹了如何對商家巨石應用做拆分,包括拆分方案的介紹,如何同時保證單個構建與功能完整性,并且針對微應用代理加載進行了進一步探索,接著介紹了大倉模式下需要遵循的規范以及未來的規劃。大倉模式目前在前端平臺已經持續不斷地完善,將來應該會針對此模式做更詳細的介紹,在拆分這件事情上,對于構建本身或許能被更加細粒度化,構建文件的代理本質上減少了代碼的構建量,目前是通過人為控制的方式,此次驗證了模塊聯邦支持可代理與動態更改expose。基于這兩個特性,是否能將構建做到更加局部化,這可能會成為構建優化的方向。應用拆分一方面提升了開發人員的開發與部署效率,同時也對業務迭代流程做了業務解耦,明確了責任邊界,更有利于后臺應用的開發需求管理,降低需求代碼維護成本。lI828資訊網——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-6162-0.html基于模塊聯邦與大倉模式的商家巨石應用拆分實踐

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 轉轉游戲的賬號訂單流程重構之路

下一篇: 如何編寫技術文檔?

標簽:
  • 熱門焦點
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規模如今超過580
  • 之家push系統迭代之路

    前言在這個信息爆炸的互聯網時代,能夠及時準確獲取信息是當今社會要解決的關鍵問題之一。隨著之家用戶體量和內容規模的不斷增大,傳統的靠"主動拉"獲取信息的方式已不能滿足用
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 講故事上個月我寫過一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,當時用的是 GDIView + WinDbg 把問題搞定,前者用來定位泄露資源,后者用來定位泄露代碼,后面有朋友反
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現百度,功能雖然實現了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁“充值中心”入口上線了本機生活界面。壹覽商業發現,該界面目前主要
  • 華為Mate60系列模具曝光:采用碩大圓形后置相機模組+拼接配色方案

    據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將迎來更新,有望在9-10月份帶來全新的華為Mate60
  • iQOO Neo8系列今日官宣:首發天璣9200+ 全球安卓最強芯!

    在昨日舉行的的聯發科新一代旗艦芯片天璣9200+的發布會上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品將全球首發搭載這款當前性能最強大的移動平臺
  • 榮耀Magicbook V 14 2021曙光藍版本正式開售,擁有觸摸屏

    榮耀 Magicbook V 14 2021 曙光藍版本正式開售,搭載 i7-11390H 處理器與 MX450 顯卡,配備 16GB 內存與 512GB SSD,重 1.48kg,厚 14.5mm,具有 1.5mm 鍵盤鍵程、
  • 聯想的ThinkBook Plus下一版曝光,鍵盤旁邊塞個平板

    ThinkBook Plus 是聯想的一個特殊筆記本類別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據有人爆料,聯想的下一款 ThinkBook Plus 可能更特殊,它
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
日韩一级大片在线| 亚洲国产午夜| 亚洲三级影院| 欧美色男人天堂| 国产精品福利av| 极品少妇一区二区三区精品视频| 欧美一区二区在线| 老司机精品久久| 久久精品亚洲国产奇米99| 午夜精品久久久久久久久久| 成人av小说网| 日本乱人伦一区| 国产欧美精品一区aⅴ影院| 日本强好片久久久久久aaa| 欧美日韩一区二区高清| 欧美亚洲国产一区二区三区| 国产精品乱码人人做人人爱| 韩国毛片一区二区三区| 一区二区三区久久网| 欧美大片一区二区三区| 三级不卡在线观看| 亚洲性色视频| 久久综合九色综合久久久精品综合| 亚洲国产精品影院| 欧美激情视频一区二区三区在线播放| 欧美色中文字幕| 亚洲精品精品亚洲| 色综合天天做天天爱| 欧美久久婷婷综合色| 亚洲成av人**亚洲成av**| 欧美一区免费| 精品欧美一区二区三区精品久久| 日日噜噜夜夜狠狠视频欧美人| 欧美日韩一区二区三区四区在线观看 | 在线观看成人av电影| 日韩一区二区免费在线电影| 日欧美一区二区| 国产欧美日韩视频一区二区三区| 久久久国产一区二区三区四区小说| 国产综合久久久久久久久久久久| 久久国产主播精品| 亚洲黄色小说网站| 一区二区亚洲| 国产精品久久久久一区二区三区共| 国产成a人亚洲| 91麻豆精品91久久久久久清纯 | 欧美日韩国产一级| 日本午夜一区二区| 久久综合一区二区三区| 亚洲一区二区三区在线播放| 亚洲午夜精品久久| 国产精品美女久久久久久久| 成人av网址在线| 日韩欧美专区在线| 国产 日韩 欧美大片| 欧美一级片在线| 国产激情一区二区三区四区| 91精品国产高清一区二区三区蜜臀| 精品一区二区在线视频| 欧美日韩国产一级| 国产做a爰片久久毛片| 欧美久久久一区| 国产精品99久久久久久有的能看| 91精品在线一区二区| 国产丶欧美丶日本不卡视频| 欧美一区二区三区视频免费| 国产白丝网站精品污在线入口| 制服丝袜激情欧洲亚洲| 国产成人午夜视频| 26uuu精品一区二区三区四区在线| 成人黄色av电影| 久久久久久影视| 国内不卡一区二区三区| 亚洲乱码国产乱码精品精可以看| 中国成人亚色综合网站| 午夜一区二区三区在线观看| 色噜噜狠狠一区二区三区果冻| 毛片一区二区三区| 日韩欧美中文字幕一区| 欧美在线国产| 一区二区三区日韩| 色欧美日韩亚洲| 国产精品一二三| 国产亚洲成年网址在线观看| 亚洲片区在线| 日韩av在线免费观看不卡| 欧美久久久久中文字幕| 91亚洲大成网污www| 亚洲同性gay激情无套| 欧美中文字幕| 国产精品中文有码| 欧美激情一二三区| 亚洲免费在线精品一区| 精品一区二区在线观看| 久久亚洲一区二区三区四区| 99成人精品| 老司机精品视频在线| 精品精品国产高清a毛片牛牛 | 亚洲综合久久久| 欧美日韩国产在线播放网站| 99久久婷婷国产综合精品电影| 亚洲乱码中文字幕综合| 欧美日韩国产综合一区二区三区| 91美女在线看| 天天综合天天综合色| 91精品国产综合久久国产大片| 精品福利av| 国产麻豆午夜三级精品| 国产精品美女久久久久久久 | 成人18视频日本| 亚洲国产毛片aaaaa无费看 | 欧美国产三区| 青娱乐精品在线视频| 欧美国产欧美亚州国产日韩mv天天看完整| 国产欧美日韩亚洲| 成人一级视频在线观看| 亚洲成人动漫在线免费观看| 26uuu国产一区二区三区| 久久尤物视频| 国产精品国产一区二区| 国产在线精品一区二区夜色| 中文字幕在线一区免费| 91麻豆精品国产91久久久资源速度| 国产精品xxx在线观看www| 精品一区二区在线视频| 亚洲永久精品大片| 久久久久久久国产精品影院| 在线精品视频免费观看| 国产一区清纯| 成人黄色小视频| 蜜臀av性久久久久蜜臀av麻豆 | 午夜在线视频观看日韩17c| a美女胸又www黄视频久久| 蜜臀久久99精品久久久画质超高清 | 91亚洲资源网| 精品一区二区日韩| 亚洲图片欧美一区| 亚洲国产精品99久久久久久久久| 欧美精品久久一区二区三区| 亚洲一区二区三区精品视频| 欧美精品97| 成人av网站在线| 久久av中文字幕片| 亚洲成人自拍网| 亚洲欧洲日韩综合一区二区| 精品国产一区久久| 91精品久久久久久蜜臀| 欧美中文字幕一二三区视频| 国产日韩久久| 在线成人欧美| 激情六月综合| 国产精品vip| 欧美黄色aaaa| 91偷拍与自偷拍精品| 风间由美一区二区三区在线观看 | 精品奇米国产一区二区三区| 欧美日韩免费一区二区三区| 色综合久久88色综合天天免费| 亚洲免费激情| 悠悠资源网久久精品| 国产精品v欧美精品∨日韩| 成人性视频免费网站| 夫妻av一区二区| 国产永久精品大片wwwapp | 久久久亚洲午夜电影| 欧美一级午夜免费电影| 欧美精品第一页| 欧美精品一卡二卡| 欧美日韩国产高清一区二区| 日本高清视频一区二区| 久久综合九色综合欧美狠狠| 蜜桃伊人久久| 久色成人在线| 欧美在线视频不卡| 欧美日韩和欧美的一区二区| 欧美亚洲一区二区在线| 欧美日韩一区成人| 91精品国产色综合久久不卡蜜臀 | 99视频在线观看一区三区| 成人爱爱电影网址| 99精品视频中文字幕| 欧美一区成人| 在线日韩av| 噜噜噜91成人网| 欧美日韩一区高清| 91精品黄色片免费大全| 精品国产亚洲一区二区三区在线观看| 精品国产成人在线影院| 中文字幕+乱码+中文字幕一区| 亚洲欧洲精品天堂一级 | 欧洲国内综合视频| 欧美日本国产一区| 欧美va在线播放| 国产欧美综合在线| 亚洲精品视频一区| 美女一区二区在线观看| 国产精品一区二区果冻传媒| 91视频在线看| 国产伦精品一区二区三区视频孕妇| 久久亚洲精品伦理|