博客 / 詳情

返回

由模塊聯邦引發的思考

用「模塊聯邦+npm monorepo」構建我的技術沉澱體系:讓開發能力螺旋式上升

作為開發者,你是否也有過這樣的困惑:

開發新項目時,總遇到似曾相識的功能,但翻遍舊項目、筆記才勉強復現;臨時吃透的知識點,項目穩定後很快遺忘,下次遇到仍像“第一次接觸”;整理的技術筆記東一榔頭西一棒槌,風格雜亂,時間久了連自己都不想看;不同項目的相似模塊分散在各個倉庫,複用成本極高,新項目只能重複造輪子……

我曾深陷這種“無效重複”的困境,直到接觸「模塊聯邦」與「npm monorepo」,才找到破解之道——用這兩種技術組合搭建一套「統一模塊沉澱體系」,既解決項目開發中“模塊分散、耦合嚴重”的問題,更實現了個人技術能力的體系化沉澱,讓成長從“零散積累”變成“螺旋上升”。

先釐清兩個核心概念:解決問題的基礎

要搭建這套體系,首先要明確兩個關鍵技術的核心價值——它們不是孤立的工具,而是互補的“沉澱載體”和“管理方式”。

1. 模塊聯邦:讓模塊“可複用、可獨立更新”的載體

模塊聯邦最早由Webpack提出,核心思想是:允許一個JavaScript運行時動態加載另一個應用的代碼。Vite生態也有對應的實現插件(@originjs/vite-plugin-federation),核心分為兩個角色:

  • Remote(提供方):一個獨立的功能模塊/應用,將自身的組件、函數、頁面等能力暴露出去,供其他模塊調用;

  • Host(消費方):另一個應用/模塊,可以直接引用並渲染Remote暴露的能力。

它最大的優勢的是「解耦+獨立更新」:Remote模塊更新後,Host應用無需重新部署;而且不同模塊無論功能差異多大(哪怕是“風馬牛不相及”的功能),都能以統一的方式被訪問,徹底打破模塊間的耦合。

2. npm monorepo:讓模塊“可集中管理”的基座

npm monorepo是基於npm生態的單倉庫多包管理方案,簡單説就是把多個關聯的模塊(比如主應用、子模塊、工具庫)放在同一個Git倉庫中管理。

對我而言,它最核心的價值是「統一與高效」:

  • 依賴統一管理:所有模塊共用一份公共依賴(比如Vue、Element Plus),無需重複下載,減少體積的同時避免版本不一致問題;

  • 開發統一調度:可以一鍵啓動、構建所有模塊,不用逐個進入目錄操作;

  • 版本統一維護:跨模塊依賴的版本同步、批量發佈更高效,避免手動修改的遺漏。

為什麼選擇這組組合?我的核心訴求

很多人用這兩種技術是為了解決“大型項目拆分”的問題,但對我而言,更核心的訴求是「構建個人技術沉澱體系」——這一切都源於我對“無效重複開發”和“知識點遺忘”的反思。

實際工作中,項目與項目的需求差異很大,以“項目為單位”的開發模式能快速響應需求,但站在開發者成長的角度,卻存在致命問題:

  1. 知識點碎片化,難以內化:為了趕項目進度,很多知識點都是“囫圇吞棗”式吸收——知道大概用法能實現功能就行,沒有深入分析原理。項目穩定後,這些臨時記憶很快遺忘,下次遇到相同問題,還是要重新查文檔、翻舊代碼,成長停滯不前;

  2. 技術沉澱雜亂,複用性低:之前整理知識點時,筆記、代碼片段分散在不同地方,風格不統一,時間久了要麼丟失要麼不想看。不同項目的相似模塊(比如登錄模塊、表格組件、工具函數)分散在各個倉庫,新項目需要時只能重新開發,無法高效複用;

  3. 能力成長無體系,難以突破:長期在“臨時解決問題”的循環中,技術能力始終是零散的“點”,無法串聯成“面”,遇到陌生需求時,很難快速拆解並複用已有經驗。

而「模塊聯邦+npm monorepo」的組合,恰好能解決這些問題:

模塊聯邦負責「標準化沉澱」——把每個功能(不管是登錄、表格,還是更復雜的業務模塊)都封裝成獨立的Remote模塊,用統一的方式暴露能力,確保不同模塊的訪問方式一致;npm monorepo負責「集中化管理」——把所有封裝好的模塊放在同一個倉庫,統一維護依賴、版本和文檔,避免沉澱的內容散落丟失。

我的核心目標:構建“可複用、可成長”的模塊庫

我最終想實現的,是一個「個人專屬的模塊基礎設施層」:

1. 「統一模式沉澱」:無論是舊項目中提煉的成熟功能,還是新項目中遇到的陌生需求,都按照“模塊聯邦Remote”的標準封裝,結構統一、風格一致,整理起來高效,後續查看也舒心;

2. 「集中管理存儲」:藉助Gitee將所有模塊存放在同一個monorepo倉庫,沉澱的內容不會丟失,而且方便後續檢索、修改和維護;

3. 「高效複用提效」:新項目啓動時,直接通過模塊聯邦將需要的模塊(Host消費Remote)集成進來,無需重複開發,把精力集中在陌生需求上;

4. 「能力螺旋上升」:遇到陌生需求時,深入分析並封裝成新的標準模塊,補充到體系中。隨着模塊庫的不斷豐富(比如積累50-100個核心模塊),我的技術能力也從“零散知識點”變成“體系化解決方案”,下次遇到類似需求時,能快速複用並優化,實現持續成長。

總結:技術工具服務於成長,而非反之

很多時候,我們學習技術工具(比如模塊聯邦、monorepo),容易陷入“只關注技術本身”的誤區。但對我而言,這兩種技術的價值,遠不止於解決項目開發的“效率問題”,更在於幫我搭建了一套「可循環的技術沉澱體系」。

它讓我從“被動響應項目需求”的狀態,轉變為“主動沉澱技術能力”的狀態——每開發一個功能,都是在為自己的“模塊庫”添磚加瓦;每遇到一個問題,都是完善體系的機會。

後續,我會逐步落地這套體系:先從舊項目中提煉核心模塊,用模塊聯邦+monorepo的模式重構整理;再在新項目中實踐複用,同時封裝新的陌生需求模塊。相信隨着模塊庫的積累,我的開發效率會越來越高,技術能力也能實現真正的螺旋式上升。

如果你也有類似的“沉澱困惑”,不妨試試這個思路——讓技術工具成為你成長的“腳手架”,而不是重複勞動的“枷鎖”。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.