<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      行云部署前端架構(gòu)解析-前言 | 京東云技術(shù)團(tuán)隊(duì)

      一個(gè)簡(jiǎn)單的自我介紹

      項(xiàng)目規(guī)模

      截止目前上萬(wàn)次代碼提交,總代碼行數(shù)1 超過(guò)21萬(wàn)行,其中人工維護(hù)的代碼超過(guò) 13萬(wàn)行,近千個(gè)文件。

      前端線上服務(wù)直接對(duì)接的后端服務(wù),達(dá)十多個(gè)。

      跟很多應(yīng)用一樣, 它有行云的入口, 也有獨(dú)立的服務(wù), 還有單獨(dú)的插件接口

      它是行云的子應(yīng)用, 也是其它應(yīng)用的主應(yīng)用

      技術(shù)棧

      代碼本身是 monorepo 的結(jié)構(gòu),通過(guò) nx + pnpm 進(jìn)行管理

      1. nx 是一個(gè)優(yōu)秀的項(xiàng)目管理工具,可以自動(dòng)分析項(xiàng)目依賴、構(gòu)建緩存(package 級(jí)別)等;

      2. pnpm 相比npm, 可以更省空間、更快安裝, 重要的是, 包版本管理更穩(wěn)定.

      項(xiàng)目直接通過(guò) webpack 進(jìn)行構(gòu)建,而非 vue 官方的 cli-service;

      后者雖提供了良好的封裝, 適于大多數(shù)項(xiàng)目, 但如果需要進(jìn)行精細(xì)化構(gòu)建過(guò)程管理,其學(xué)習(xí)成本與坑量也翻倍了。

      項(xiàng)目框架采用 vue2 + JModule

      JModule 可以幫助我將項(xiàng)目拆分為多個(gè)模塊, 這對(duì)于這個(gè)大型項(xiàng)目的管理帶來(lái)了諸多裨益, 其中細(xì)節(jié)在后續(xù)章節(jié)闡述.

      似乎有很多項(xiàng)目因?yàn)镴Module執(zhí)行了兩次構(gòu)建,一份自己獨(dú)立部署使用,一份對(duì)接行云應(yīng)用,從而導(dǎo)致構(gòu)建時(shí)間直接翻倍,這應(yīng)該沒(méi)有必要. 相反用好了可以通過(guò)拆分模塊來(lái)加速構(gòu)建,而這也是本項(xiàng)目的處理方案。

      monorepo 下的包構(gòu)成與依賴關(guān)系

      主要包含3部分:

      1. API SDK @jindowin/api-jdos*

      2. 公用組件庫(kù) @jindowin/common

      3. 業(yè)務(wù)模塊 @jindowin/jdos3*

      其依賴關(guān)系可以通過(guò) nx 工具直觀的看到:

      項(xiàng)目分兩層,底層為基礎(chǔ)包(1和2),上層為業(yè)務(wù)模塊(3), 這其中還有些細(xì)節(jié):

      1. 單向引用: 只允許存在代碼上層對(duì)下層的依賴, 反之不行.

      2. 無(wú)橫向引用: 每層包之間不存在代碼上的橫向依賴關(guān)系, 互相隔離

      3. @jindowin/jdos3 這個(gè)包是主入口,通過(guò) JModule 將其它模塊進(jìn)行組合

      架構(gòu)設(shè)計(jì)的來(lái)由

      回憶一個(gè)項(xiàng)目的成長(zhǎng):

      框架設(shè)計(jì)者準(zhǔn)備了模板, 只需要一行 create 命令

      她五臟俱全, 結(jié)構(gòu)統(tǒng)一

      項(xiàng)目啟動(dòng)很快

      很順利

      不用擔(dān)心端口沖突, 它能自動(dòng)檢測(cè)并調(diào)整

      不用時(shí)刻刷新頁(yè)面, 它內(nèi)置了熱加載

      不用擔(dān)心代碼規(guī)范, 它提供了構(gòu)建時(shí)校驗(yàn)

      后來(lái)

      我們加入了 host, 單點(diǎn)登錄解決了

      我們寫(xiě)好了 proxyTable, 數(shù)據(jù)就有了

      到這里, 世界更加美好了

      再后來(lái)

      項(xiàng)目逐漸長(zhǎng)大, 而最初的美好

      也開(kāi)始慢慢消散

      直到有一天

      電腦風(fēng)扇發(fā)出八級(jí)大風(fēng)的哀嚎

      引以為傲的 proxyTable 開(kāi)始頻繁沖突

      代碼校驗(yàn)失效了

      產(chǎn)品問(wèn), 這倆站點(diǎn)的功能要合并

      開(kāi)發(fā)問(wèn), 昨天還好好的, 今天就跨域了

      測(cè)試問(wèn), 我要部署一套測(cè)試環(huán)境

      設(shè)計(jì)問(wèn), 這個(gè)頁(yè)面的標(biāo)題咋比另一個(gè)頁(yè)面大呢

      領(lǐng)導(dǎo)問(wèn), 服務(wù)掛了怎么辦

      用戶問(wèn), 網(wǎng)頁(yè)真白, 不知道還要再白多久

      ...

      我開(kāi)始懷念

      我開(kāi)始行動(dòng)

      我需要沉淀

      架構(gòu)設(shè)計(jì)的細(xì)節(jié)

      在不久前, 我在草圖上寫(xiě)下了一個(gè)粗糙的結(jié)構(gòu), 原計(jì)劃一篇寫(xiě)完

      有性格測(cè)試說(shuō), 我是一個(gè)P人, 不愛(ài)做計(jì)劃

      后來(lái), 計(jì)劃真的破產(chǎn)了, 一周過(guò)去了我只寫(xiě)完了《前言》

      沒(méi)有拖延, 但真的低估了它的細(xì)節(jié)與難度

      梳理了一下分支, 從TODO開(kāi)始, 分別來(lái)寫(xiě):

      模塊設(shè)計(jì)

      模塊化是一個(gè)常規(guī)的設(shè)計(jì)方案, 但在具體實(shí)現(xiàn)層面, 仍有一些細(xì)節(jié)可以探討, 比如:

      1. 設(shè)計(jì)時(shí)的基本原則

      2. 如何界定一個(gè)模塊?

      3. 預(yù)期能獲得哪些收益?

      4. 模塊間是否存在依賴、層級(jí)關(guān)系?

      5. 模塊的分類?

      6. 模塊間的通信方式?

      詳情: 行云部署前端架構(gòu)解析-模塊設(shè)計(jì)

      開(kāi)發(fā)體驗(yàn)

      如何優(yōu)化構(gòu)建速度?
      新成員介入開(kāi)發(fā)時(shí),如何做最少的配置來(lái)啟動(dòng)項(xiàng)目?
      多人協(xié)作時(shí), 如何減少公共配置的沖突?
      如何減輕電腦的負(fù)擔(dān), 讓編碼更加順暢?
      微前端的項(xiàng)目, 如何順暢進(jìn)行開(kāi)發(fā)聯(lián)調(diào)?

      詳情: 行云部署前端架構(gòu)-開(kāi)發(fā)體驗(yàn)

      首屏加載

      TODO
      這是一個(gè)很常見(jiàn)的問(wèn)題, 不解釋

      權(quán)限模型

      TODO
      這可能涉及角色的系統(tǒng)可能都逃不過(guò)的一個(gè)坎. 主要關(guān)注路由權(quán)限、菜單權(quán)限、具體功能的權(quán)限.
      我們?nèi)绾喂芾磉@些權(quán)限?
      如何應(yīng)對(duì)微前端模型?

      多站點(diǎn)管理

      TODO

      1. 多個(gè)站點(diǎn), 需要多套服務(wù)嗎

      2. 如何應(yīng)對(duì)站點(diǎn)合并

      3. 如何區(qū)分站點(diǎn)功能

      4. 涉及站點(diǎn)時(shí)編碼的基本原則

      5. 多個(gè)入口還是一個(gè)入口

      多入口

      TODO
      這也是不少團(tuán)隊(duì)遇到的問(wèn)題, 對(duì)于多數(shù)應(yīng)用一個(gè) if 執(zhí)行不同的 bootstrap 代碼可能就夠了.

      但有時(shí)候事情偏偏就很復(fù)雜...

      我需要提供一些獨(dú)立的組件, 理想情況下, 一個(gè) exports 也就可以了

      但當(dāng)情況不理想的時(shí)候...
      你要用提供的組件及其所有依賴組件, 依賴了 router
      還有它與多站點(diǎn)的化學(xué)反應(yīng), 事情開(kāi)始更加復(fù)雜

      應(yīng)用雙生

      TODO
      這是一個(gè)奇怪的概念, 我造的.

      它描述了這樣一個(gè)現(xiàn)象: 一個(gè)應(yīng)用, 兩種形態(tài). 或者該叫: 多態(tài)?

      一般不會(huì)出現(xiàn)

      一般出現(xiàn)也是過(guò)渡態(tài)

      但真正的困難, 往往都是過(guò)渡態(tài)

      行云部署與持續(xù)交付, 就是行云的兩個(gè)子應(yīng)用, 有不同的入口進(jìn)入.

      問(wèn)題是: 同一套代碼, 如何正常工作在兩種模式下? 尤其是里面的路由

      接口異常

      TODO

      1. 從用戶遇到問(wèn)題, 反饋到研發(fā)看到異常, 日志已經(jīng)融入了大海

      2. 服務(wù)掛了, 異常提示在屏幕上爭(zhēng)相顯示, 那隊(duì)伍, 比瓦罐湯的隊(duì)伍還長(zhǎng)

      配置管理

      TODO
      我們有一個(gè)功能的配置, 它有800多行
      我們有一套服務(wù)的配置, 這個(gè)簡(jiǎn)單一點(diǎn), 加起來(lái)也就 300 行左右

      如何開(kāi)發(fā)不亂、上線不慌?

      服務(wù)維護(hù)

      TODO
      這是一個(gè)簡(jiǎn)單的問(wèn)題, 因?yàn)槲也粚I(yè)
      我猜, 我可以在10行以內(nèi)講清楚.
      但是, 現(xiàn)在不忙講...

      以上內(nèi)容, 可能跟據(jù)后續(xù)寫(xiě)作情況增減

      爭(zhēng)取早日清理掉里面的 TODO 標(biāo)簽

      [1] 統(tǒng)計(jì)范圍為倉(cāng)庫(kù)內(nèi) jdos 項(xiàng)目相關(guān)的 js\ts\jsx\tsx\css\less 文件

      作者:京東科技 林光輝

      來(lái)源:京東云開(kāi)發(fā)者社區(qū) 轉(zhuǎn)載請(qǐng)注明來(lái)源

      posted @ 2024-01-18 10:05  京東云技術(shù)團(tuán)隊(duì)  閱讀(82)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 光棍天堂在线手机播放免费| 精品婷婷色一区二区三区| 久久―日本道色综合久久| 久久精品一区二区东京热| 亚洲色欲色欱WWW在线| 久久―日本道色综合久久| 伊人成人在线视频免费| 青青草无码免费一二三区| 久久精品国产福利亚洲av| 少妇激情一区二区三区视频小说| 国产99久久亚洲综合精品西瓜tv| 国产视色精品亚洲一区二区| 在线a人片免费观看| 国产一区二区亚洲一区二区三区 | 成人免费乱码大片a毛片| 亚洲精品国产摄像头| 精品国产高清中文字幕| 国产精品亚洲а∨天堂2021| 亚洲精品三区二区一区一| 亚洲一区二区偷拍精品| 18成禁人视频免费| 日韩高清不卡一区二区三区| 四虎国产精品永久入口| 欧美成人精精品一区二区三区| 真实国产老熟女无套内射 | 国产精品剧情亚洲二区| 国产中文字幕精品免费| 成人精品自拍视频免费看| 正在播放国产对白孕妇作爱| 92精品国产自产在线观看481页| 日韩精品一二区在线观看| 一级毛片网| 国产蜜臀在线一区二区三区| 九色综合国产一区二区三区 | 在线天堂新版资源www在线下载| 国产一区二区三区在线观看免费| 在线无码免费看黄网站| 国产福利高颜值在线观看| 国产成人午夜福利精品| 亚洲AV永久中文无码精品综合| 双腿张开被5个男人调教电影|