Module Federation 和 Native Federation 的比較

前言

????????Module Federation 是 Webpack 5 引入的微前端架構方案,允許不同獨立構建的應用在運行時動態共享模塊。

????????Native Federation 是 Angular 官方基于 Module Federation 理念實現的專為 Angular 優化的微前端方案。

概念解析

Module Federation (模塊聯邦)

????????Module Federation 是 Webpack 5 引入的一項革命性功能,它允許不同的 JavaScript 應用程序在運行時動態共享代碼。這種技術使得微前端架構的實現變得更加簡單和高效。

核心特點

  • 運行時動態加載代碼

  • 共享依賴,避免重復加載

  • 獨立部署各個微前端應用

  • 支持版本控制和回滾

Native Federation (原生聯邦)

????????Native Federation 是 Module Federation 概念的擴展和演進,旨在提供更接近瀏覽器原生能力的模塊共享方案。它不依賴于特定的打包工具,而是利用現代瀏覽器特性如 ES Modules、Import Maps 等實現模塊共享。

核心特點

  • 不依賴特定構建工具

  • 利用瀏覽器原生模塊系統

  • 更輕量級的實現

  • 更好的長期兼容性

主要區別

特性Module FederationNative Federation
技術基礎Webpack 5 特定功能瀏覽器原生 ES Modules 和 Import Maps
構建工具依賴必須使用 Webpack不依賴特定構建工具
運行時開銷較高(包含 Webpack 運行時)較低(直接使用瀏覽器能力)
成熟度高(已被廣泛采用)較低(較新概念)
動態加載能力強大受限于瀏覽器原生能力
共享依賴管理精細控制相對簡單
適用場景復雜企業應用輕量級應用或未來項目

使用場景

Module Federation 適用場景
  1. 大型企業應用:需要將復雜應用拆分為多個獨立部署的微前端

  2. 多團隊協作:不同團隊負責不同功能模塊,需要獨立開發部署

  3. 漸進式遷移:從單體架構逐步遷移到微前端架構

  4. 共享組件庫:在多個應用間共享UI組件或業務邏輯

  5. 需要精細控制依賴:精確控制共享哪些依賴及版本

  6. Module Federation 解析機制如下

Native Federation 適用場景
  1. 輕量級微前端:不需要復雜構建流程的簡單應用拆分

  2. 未來導向項目:希望減少對特定構建工具的依賴

  3. 簡單模塊共享:只需要基本的模塊共享功能

  4. 教育或演示項目:希望展示純瀏覽器能力的項目

  5. 逐步增強應用:從簡單開始,未來可能擴展的項目

  6. Native Federation 解析機制如下

示例展示

Module Federation 使用示例:

微前端 - Module Federation使用完整示例-CSDN博客

Native Federation 使用示例

微前端 - Native Federation使用完整示例-CSDN博客

選擇建議

  1. 當前項目需求:如果需要立即投入生產,Module Federation 是更成熟的選擇

  2. 長期維護:Native Federation 可能更適合長期項目,減少構建工具鎖定

  3. 團隊技能:考慮團隊對 Webpack 的熟悉程度

  4. 項目復雜度:復雜項目可能需要 Module Federation 的精細控制

  5. 瀏覽器支持:Native Federation 需要現代瀏覽器支持

其實,總的來說,對于開發者來說,最主要的使用區別就是:

  1. Module Federation 需要使用webpack.config.js文件,可能還需要結合?ngx-build-plus一起配置使用;
  2. Native Federation 需要的是?federation.config.js文件,不需要特別安裝什么加載插件可直接使用;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84707.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84707.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Easy Excel

Easy Excel 一、依賴引入二、基本使用1. 定義實體類(導入/導出共用)2. 寫 Excel3. 讀 Excel 三、常用注解說明(完整列表)四、進階:自定義轉換器(Converter) 其它自定義轉換器沒生效 Easy Excel在…

iOS 26 攜眾系統重磅更新,但“蘋果智能”仍與國行無緣

美國西海岸的夏天,再次被蘋果點燃。一年一度的全球開發者大會 WWDC25 如期而至,這不僅是開發者的盛宴,更是全球數億蘋果用戶翹首以盼的科技春晚。今年,蘋果依舊為我們帶來了全家桶式的系統更新,包括 iOS 26、iPadOS 26…

AI高考志愿助手應用架構設計并上線實施運行

環境: AI高考志愿助手 問題描述: AI高考志愿助手應用架構設計并上線實施運行 業務需求:開發一個AI升學助手,功能是幫助用戶模擬填報高考志愿等功能,數據是歷年各專業的錄取分數線表格。數據確認: 近3年約100多萬條數據,原始數據是excel表格數據。解決方案: 一、項…

深入淺出掌握 Axios(持續更新)

在了解ajax和axios之前,我們先觀察一下他們是什么英文的縮寫 ajax 的名字為 asynchroanous JavaScript and XML 而axios的名稱來源于英文單詞“axis”與“I/O”的結合,并非直接縮寫自某個特定短語。 先導知識 在本文我們簡單的介紹一下ajax后著重講解…

windows10下搭建nfs服務器

windows10下搭建nfs服務器 有參考這篇博客 Windows10搭建NFS服務 - fuzidage - 博客園 下載 NFS Server這個app 通過網盤分享的文件:nfs1268 (1).exe 鏈接: https://pan.baidu.com/s/1rE4h710Uh-13kWGXvjkZzw 提取碼: mwa4 --來自百度網盤超級會員v5的分享 下載后…

npm符號鏈接

前言 最近在寫一個快應用項目,demo中依賴了本地文件,package.json如下: 此時 node_modules 下出現了 mysdk,復制整個項目,但是copy的項目中的node_modules并未出現該文件,導致報錯。 解決方案 觀察 pa…

SQL 中 IDENTITY 列的特殊處理.

SQL 處理中,遇到提示: "消息 544,級別 16,狀態 1,第 3 行 當 IDENTITY_INSERT 設置為 OFF 時,不能為表 BM 中的標識列插入顯式值。" 即當 SQL Server 表中的 ??標識列(Identity Column)?? 插入顯式值,但未啟用 IDENTITY_INSERT 選項。由此報錯,以下是詳…

網絡安全等級保護中關于SSL證書的整改如何處理?

SSL證書在網絡安全等級保護(等保)體系中扮演著至關重要的角色,是實現多個等保核心要求(尤其是三級及以上)的關鍵技術手段之一。其重要性主要體現在以下幾個方面: 滿足“身份鑒別”要求(等保要求…

Docker容器化打造elasticsearch8.18.2集群企業實戰(含kibana+證書認證)

主機信息 主機配置4Core8GB硬盤大于80GB 主機名IP地址角色10-0-17-12310.0.17.123es-node110-0-17-15810.0.17.158es-node2kibana-15610.0.17.156kibana 一、環境準備 1. 安裝 Docker 這里就不介紹如何安裝docker了,本文docker版本為20 2. 主機名與網絡與內核配置…

JAVA語言的學習(Day_1)

寫一個項目并運行: 第一步:新建一個.txt文本。右擊點開用Notepad打開,并編輯。 編輯并保存后,可以在文件的查看中,顯示出文件的類型(eg: .txt / .java)。將txt文本的.txt類型改為.java。 之后在下面的截…

JS 原型與原型鏈詳解

JavaScript 原型與原型鏈詳解 文章目錄 JavaScript 原型與原型鏈詳解一、基礎概念類1.1 什么是原型?JavaScript 中如何訪問一個對象的原型?1.2 構造函數、實例對象和原型對象之間的關系是什么?1.3 prototype 和 **proto** 的區別是什么&#…

DEVICENET轉MODBUS TCP網關連接DeviceNet數字遠程IO模塊配置案例

設備與網絡架構,主控設備:支持Modbus TCP協議的PLC(如西門子S7-1200)。網關設備:開疆智能Modbus TCP轉DeviceNet網關KJ-DVCZ-MTCPS(需支持DeviceNet從站功能)。目標設備:DeviceNet數…

Ubuntu下使用PyTurboJPEG加速圖像編解碼

目錄 一、概述 二、安裝PyTurboJPEG 三、測試 一、概述 在計算機視覺領域,圖像編解碼是繞不開的基礎環節。雖然 OpenCV 能解決大部分圖像處理問題,但在性能要求嚴苛的場景下存在短板。本文將介紹基于 libjpeg-turbo 的高效 JPEG 編解碼庫 PyTurboJPE…

MCU、MPU、GPU、Soc、DSP、FPGA、CPLD……它們到底是什么?

MCU、MPU、GPU、Soc、DSP、FPGA、CPLD…… 這些簡稱在各大論壇、會議、發布會中屢見不鮮,看到簡稱,雖然也能說出大概; 但要問具體是什么?用在什么場景?又有什么區別……好像還是差點意思;本篇文章就記錄一…

Django RBAC項目后端實戰 - 03 DRF權限控制實現

項目背景 在上一篇文章中,我們完成了JWT認證系統的集成。本篇文章將實現基于Redis的RBAC權限控制系統,為系統提供細粒度的權限控制。 開發目標 實現基于Redis的權限緩存機制開發DRF權限控制類實現權限管理API配置權限白名單 前置配置 在開始開發權限…

[網頁五子棋][用戶模塊]數據庫設計和配置(MyBatis)、約定前后端交互接口、服務器開發

文章目錄 數據庫數據庫設計配置 MyBatis1. Spring 配置2. 創建實體類3. 創建 Mapper 接口4. 使用 MyBatis 約定前后端交互接口登錄接口注冊接口獲取用戶信息 服務器開發loginregistergetUserInfo完整代碼 數據庫 數據庫設計 完成注冊登錄以及用戶分數管理 使用數據庫來保存上…

Qt/C++學習系列之列表使用記錄

Qt/C學習系列之列表使用記錄 前言列表的初始化界面初始化設置名稱獲取簡單設置 單元格存儲總結 前言 列表的使用主要基于QTableWidget控件,同步使用QTableWidgetItem進行單元格的設置,最后可以使用QAxObject進行單元格的數據讀出將數據進行存儲。接下來…

防火墻通常可以分為哪些類型?

防火墻是目前保護網絡安全的重要設備,能夠通過監控、過濾和控制進出網絡的數據流量,來保護內部網絡不會受到未經授權的IP地址進行訪問和惡意的網絡威脅,設置防火墻能夠幫助企業確保網絡的安全性,同時防火墻也會根據不同的功能來劃…

基于GeoTools的道路相交多個點容差冗余計算實戰

目錄 前言 一、關于道路相交 1、相交四個點 2、點更多的情況 二、基于距離的相交點去重 1、冗余距離計算 2、調用過程 3、去重后的結果 三、總結 前言 在地理信息系統(GIS)領域,道路網絡數據的處理與分析一直是關鍵課題。隨著城市化進…

android:foregroundServiceType詳解

在 Android 中,foregroundServiceType 是用于聲明前臺服務類型的屬性,主要從 Android 10(API 29)開始引入,并在 Android 11(API 30)及更高版本 中進一步細化。以下是所有可用的 foregroundServi…