Vue微前端架構與Qiankun實踐理論指南

来源:https://www.cnblogs.com/Amd794/p/18249274
-Advertisement-
Play Games

這篇文章介紹了微前端架構概念,聚焦於如何在Vue.js項目中應用Qiankun框架實現模塊化和組件化,以達到高效開發和維護的目的。討論了Qiankun的原理、如何設置主應用與子應用的通信,以及如何解決跨域問題和優化集成過程,從而實現前端應用的靈活擴展與組織。 ...



title: Vue微前端架構與Qiankun實踐理論指南
date: 2024/6/15
updated: 2024/6/15
author: cmdragon

excerpt:
這篇文章介紹了微前端架構概念,聚焦於如何在Vue.js項目中應用Qiankun框架實現模塊化和組件化,以達到高效開發和維護的目的。討論了Qiankun的原理、如何設置主應用與子應用的通信,以及如何解決跨域問題和優化集成過程,從而實現前端應用的靈活擴展與組織。

categories:

  • 前端開發

tags:

  • 微前端
  • Vue.js
  • Qiankun
  • 框架
  • 架構
  • 通信
  • 集成

image

image

掃碼關註或者微信搜一搜:編程智域 前端至全棧交流與成長

第一章:微前端架構概述

微前端概念介紹

微前端是一種設計理念,它借鑒了微服務架構的思想,將一個龐大的前端應用拆分成多個獨立的小型應用(微應用)。每個微應用可以獨立開發、測試、部署和維護,並且可以獨立運行。這些微應用通過一定的機制(如路由、事件匯流排等)集成在一起,形成一個完整的應用程式。微前端的核心思想是將前端應用分解為一組可獨立維護、獨立部署的子應用,從而提高開發效率、降低維護成本,同時保證系統的靈活性和可擴展性。

微前端架構的優勢

  1. 技術棧無關:不同的團隊可以使用不同的技術棧進行開發,例如,一個團隊可以使用React,另一個團隊可以使用Vue,而主應用可以使用Angular。這種靈活性使得團隊能夠選擇最適合他們需求的技術棧。
  2. 獨立部署:每個微應用可以獨立部署,這意味著一個微應用的更新不會影響到其他微應用,從而提高了部署的靈活性和安全性。
  3. 易於擴展:隨著項目的增長,可以輕鬆地添加新的微應用,而無需重構整個應用。這種模塊化的設計使得應用更容易擴展和維護。
  4. 團隊協作:微前端架構鼓勵並行開發,不同的團隊可以獨立工作,互不幹擾,從而提高了團隊協作的效率。
  5. 可維護性:由於每個微應用都是獨立的,因此它們可以獨立維護,這有助於降低維護成本和提高維護效率。

微前端架構的挑戰

  1. 通信複雜性:微應用之間的通信可能會變得複雜,需要設計良好的通信機制來確保數據的一致性和實時性。
  2. 樣式隔離:確保微應用之間的樣式不會相互干擾是一個挑戰,需要使用CSS隔離技術來避免樣式衝突。
  3. 性能問題:微前端架構可能會引入額外的性能開銷,例如,微應用之間的載入和通信可能會影響應用的響應速度。
  4. 技術債務:隨著時間的推移,不同的微應用可能會使用不同的技術棧和版本,這可能導致技術債務的積累。

微前端架構的應用場景

  1. 大型企業級應用:對於大型企業級應用,微前端架構可以幫助管理複雜的代碼庫,提高開發效率。
  2. 多團隊協作項目:在多團隊協作的項目中,微前端架構可以減少團隊之間的依賴,提高協作效率。
  3. 遺留系統現代化:對於需要現代化的遺留系統,微前端架構可以逐步替換舊的功能模塊,而不影響整個系統的運行。
  4. 多租戶應用:在多租戶應用中,微前端架構可以允許每個租戶擁有自己的前端應用,同時共用後端服務。

第二章:Vue與微前端

Vue.js的介紹

Vue.js 是一個漸進式 JavaScript 框架,用於構建用戶界面。它易於上手,同時提供了豐富的功能,使得它非常適合構建複雜的單頁應用(SPA)。Vue.js
的核心庫專註於視圖層,易於與第三方庫或已有項目整合。此外,Vue.js 還提供了 Vue Router 用於頁面路由和 Vuex 用於狀態管理,以及
Vue CLI 用於快速搭建項目。

Vue.js在微前端架構中的應用

在微前端架構中,Vue.js 可以作為一個獨立的微應用來使用。每個微應用可以獨立開發、測試和部署,然後通過一定的集成機制(如路由、事件匯流排等)與其他微應用集成在一起。Vue.js
的模塊化設計使得它非常適合微前端架構,因為它允許開發者將應用拆分成多個可復用的組件。

Vue.js與其他前端框架的集成

Vue.js 可以與其他前端框架集成,例如 React 或 Angular。這種集成可以通過以下幾種方式實現:

  1. 共用庫:可以創建一個共用庫,包含一些通用的組件或工具函數,這些可以在不同的微應用中使用,無論它們是基於 Vue.js 還是其他框架。
  2. 微應用容器:可以使用微應用容器(如 Single-SPA)來集成不同的微應用。這些容器可以管理不同框架的微應用的生命周期,並提供通信機制。
  3. 自定義集成:如果需要更精細的控制,可以編寫自定義的集成代碼,以實現不同框架之間的通信和狀態共用。
  4. API網關:對於後端服務,可以使用 API 網關來統一不同微應用的後端介面,使得前端應用可以無縫地調用後端服務。
  5. 事件匯流排:可以使用事件匯流排來實現微應用之間的通信,無論它們是基於 Vue.js 還是其他框架。

第三章:Qiankun框架介紹

Qiankun框架的起源與發展

Qiankun 是一個由螞蟻金服開源的企業級微前端框架,它允許你將不同框架開發的應用作為微應用集成到主應用中,同時保持每個微應用的獨立性和完整性。Qiankun
的名字來源於中國古代神話中的“千鈞一髮”,寓意著它能夠承載大量的微應用,並且能夠在關鍵時刻發揮作用。

Qiankun 的起源可以追溯到螞蟻金服內部對微前端架構的需求,隨著微前端架構的流行,Qiankun
逐漸發展成為一個成熟的微前端解決方案,併在開源社區中獲得了廣泛的關註和認可。

Qiankun框架的核心概念

Qiankun 的核心概念包括:

  1. 微應用:指被集成到主應用中的獨立應用,可以是基於任何前端框架開發的。
  2. 主應用:指承載和管理微應用的容器應用,通常負責微應用的載入、卸載、通信等。
  3. 沙箱:Qiankun 使用沙箱技術來隔離微應用之間的運行環境,確保它們不會相互干擾。
  4. 基座應用:在 Qiankun 中,主應用也被稱為基座應用,它是整個微前端架構的入口。

Qiankun框架的架構設計

Qiankun 的架構設計主要包括以下幾個部分:

  1. 入口:微應用的入口通常是它的 HTML 文件,Qiankun 通過載入這個 HTML 文件來啟動微應用。
  2. 生命周期:Qiankun 管理微應用的生命周期,包括載入、掛載、卸載等。
  3. 通信:Qiankun 提供了全局的狀態管理機制,允許微應用之間進行通信。
  4. 樣式隔離:Qiankun 使用 Shadow DOM 或 CSS 隔離技術來防止樣式衝突。
  5. 沙箱:Qiankun 使用沙箱技術來隔離微應用的運行環境,確保它們不會相互干擾。

Qiankun框架的功能特點

Qiankun 的功能特點包括:

  1. 輕量級:Qiankun 本身非常輕量,不會對主應用或微應用造成負擔。
  2. 高性能:Qiankun 的架構設計保證了微應用的載入和運行效率。
  3. 易用性:Qiankun 提供了簡單的 API 和配置選項,使得集成微應用變得容易。
  4. 可擴展性:Qiankun 的設計允許開發者根據需要擴展其功能。
  5. 社區支持:Qiankun 擁有一個活躍的開源社區,提供了豐富的文檔和示例。
  6. 沙箱技術:Qiankun 使用沙箱技術來隔離微應用的運行環境,確保它們不會相互干擾。
  7. 樣式隔離:Qiankun 使用 Shadow DOM 或 CSS 隔離技術來防止樣式衝突。
  8. 全局狀態管理:Qiankun 提供了全局的狀態管理機制,允許微應用之間進行通信。

第四章:Qiankun框架安裝與配置

Qiankun框架的安裝方法

Qiankun 框架的安裝通常涉及到以下步驟:

  1. 環境準備:確保你的開發環境中已經安裝了 Node.js 和 npm 或 yarn。

  2. 創建項目:使用腳手架工具創建一個新的項目,或者將 Qiankun 集成到現有的項目中。

  3. 安裝 Qiankun:在項目目錄下,運行以下命令來安裝 Qiankun:

    npm install qiankun
    
    

    或者使用 yarn:

    yarn add qiankun
    
    
  4. 集成 Qiankun:根據你的項目類型(如 React、Vue、Angular 等),按照 Qiankun 官方文檔的指引進行集成。

Qiankun框架的基本配置

Qiankun 的基本配置通常包括以下幾個部分:

  1. 註冊微應用:在主應用中,使用registerMicroApps方法來註冊微應用,包括微應用的名稱、入口、容器等信息。
  2. 啟動 Qiankun:在主應用中,使用start方法來啟動 Qiankun,並配置一些全局的生命周期鉤子。
  3. 配置路由:根據需要配置主應用的路由,以便正確地載入和切換微應用。

Qiankun框架的高級配置

Qiankun 的高級配置包括但不限於:

  1. 沙箱配置:可以配置沙箱的類型(如 LegacySandbox、StrictSandbox 等)以及沙箱的運行模式。
  2. 樣式隔離:可以配置樣式隔離的策略,如使用 Shadow DOM 或 CSS 隔離。
  3. 全局狀態管理:可以配置全局狀態管理,如使用 Redux、Vuex 等。
  4. 生命周期鉤子:可以配置微應用的生命周期鉤子,如載入前、載入後、掛載前、掛載後、卸載前、卸載後等。
  5. 通信:可以配置微應用之間的通信機制,如使用全局事件匯流排、Redux 等。
  6. 載入微應用:可以配置微應用的載入策略,如使用 prefetch、lazy 等。
  7. 錯誤處理:可以配置錯誤處理機制,如使用全局錯誤處理器。
  8. 自定義渲染:可以配置自定義渲染邏輯,如使用自定義的載入動畫、錯誤頁面等。
  9. 許可權控制:可以配置許可權控制機制,如使用路由守衛、許可權驗證等。
  10. 日誌記錄:可以配置日誌記錄機制,如使用 console.log、第三方日誌庫等。

第五章:Vue微前端項目搭建

Vue微前端項目的規劃

在搭建Vue微前端項目之前,需要進行詳細的規劃,包括:

  1. 需求分析:明確項目的需求,包括功能需求、性能需求、安全需求等。
  2. 技術選型:選擇合適的技術棧,包括前端框架(Vue)、構建工具(Webpack)、狀態管理(Vuex)、路由管理(Vue Router)等。
  3. 架構設計:設計項目的架構,包括微應用劃分、通信機制、狀態管理、樣式隔離等。
  4. 開發流程:制定開發流程,包括開發規範、代碼審查、版本控制等。
  5. 部署策略:制定部署策略,包括部署環境、部署流程、監控機制等。

Vue微前端項目的搭建步驟

搭建Vue微前端項目通常包括以下步驟:

  1. 環境準備:安裝Node.js、npm或yarn,並配置好開發環境。
  2. 創建主應用:使用Vue CLI創建主應用,並配置好項目的基本結構。
  3. 創建微應用:使用Vue CLI創建微應用,並配置好項目的基本結構。
  4. 集成Qiankun:在主應用和微應用中集成Qiankun框架,並配置好相關參數。
  5. 配置路由:配置主應用和微應用的路由,以便正確地載入和切換微應用。
  6. 樣式隔離:配置樣式隔離策略,如使用Shadow DOM或CSS隔離。
  7. 狀態管理:配置狀態管理策略,如使用Vuex或Redux。
  8. 通信機制:配置微應用之間的通信機制,如使用全局事件匯流排或Redux。
  9. 測試:進行單元測試、集成測試和性能測試,確保項目質量。
  10. 部署:將項目部署到生產環境,併進行監控和維護。

Vue微前端項目的目錄結構

Vue微前端項目的目錄結構通常包括以下幾個部分:

  1. 主應用

    • src/:源代碼目錄

      • assets/:靜態資源目錄
      • components/:公共組件目錄
      • views/:頁面目錄
      • App.vue:主組件
      • main.js:入口文件
    • public/:公共資源目錄

    • package.json:項目配置文件

    • vue.config.js:Vue CLI配置文件

  2. 微應用

    • src/:源代碼目錄

      • assets/:靜態資源目錄
      • components/:公共組件目錄
      • views/:頁面目錄
      • App.vue:主組件
      • main.js:入口文件
    • public/:公共資源目錄

    • package.json:項目配置文件

    • vue.config.js:Vue CLI配置文件

  3. Qiankun配置

    • src/micro-apps.js:微應用註冊配置文件
    • src/lifecycles.js:生命周期鉤子配置文件
  4. 其他

    • .eslintrc.js:ESLint配置文件
    • .gitignore:Git忽略文件
    • README.md:項目說明文件

第六章:Vue微前端項目開發

Vue微前端項目的開發流程

Vue微前端項目的開發流程通常包括以下幾個步驟:

  1. 需求分析:明確每個微應用的功能需求,確定開發任務和目標。
  2. 技術選型:根據需求選擇合適的技術棧,包括前端框架(Vue)、構建工具(Webpack)、狀態管理(Vuex)、路由管理(Vue Router)等。
  3. 架構設計:設計每個微應用的架構,包括組件劃分、狀態管理、路由配置等。
  4. 編碼實現:根據設計文檔進行編碼實現,包括編寫Vue組件、配置Vuex狀態管理、設置Vue Router路由等。
  5. 單元測試:編寫單元測試用例,對組件和功能進行測試,確保代碼質量。
  6. 集成測試:將微應用集成到主應用中,進行集成測試,確保微應用之間能夠正常通信和協作。
  7. 性能優化:對項目進行性能優化,包括代碼優化、資源優化、網路優化等。
  8. 部署上線:將項目部署到生產環境,併進行監控和維護。

Vue微前端項目的開發工具

Vue微前端項目的開發工具通常包括以下幾個:

  1. 編輯器:如VSCode、Sublime Text、WebStorm等,用於編寫代碼。
  2. 構建工具:如Webpack、Vite等,用於打包和構建項目。
  3. 版本控制:如Git,用於管理代碼版本和協作開發。
  4. 調試工具:如Chrome DevTools、Vue DevTools等,用於調試和優化代碼。
  5. 測試工具:如Jest、Mocha、Chai等,用於編寫和執行測試用例。
  6. 性能監控工具:如Lighthouse、WebPageTest等,用於監控和分析項目性能。

Vue微前端項目的開發技巧

Vue微前端項目的開發技巧包括以下幾個:

  1. 組件化開發:將頁面拆分成獨立的Vue組件,提高代碼的可維護性和復用性。
  2. 狀態管理:使用Vuex或Redux等狀態管理庫,集中管理應用狀態,方便數據共用和狀態更新。
  3. 路由管理:使用Vue Router或React Router等路由管理庫,配置路由規則,實現頁面跳轉和參數傳遞。
  4. 樣式隔離:使用CSS Modules或Shadow DOM等技術,實現樣式隔離,避免樣式衝突。
  5. 代碼分割:使用Webpack的代碼分割功能,將代碼拆分成多個塊,按需載入,提高頁面載入速度。
  6. 懶載入:使用Vue的非同步組件或Webpack的懶載入功能,實現組件的懶載入,提高頁面載入速度。
  7. 性能優化:使用Lighthouse、WebPageTest等工具,對項目進行性能分析,併進行優化,提高頁面性能。
  8. 單元測試:編寫單元測試用例,對組件和功能進行測試,確保代碼質量。
  9. 集成測試:將微應用集成到主應用中,進行集成測試,確保微應用之間能夠正常通信和協作。
  10. 持續集成:使用Jenkins、Travis CI等持續集成工具,自動化構建、測試和部署流程。

附錄

Vue微前端項目相關資源

  1. 官方文檔:Vue.js 官方文檔提供了關於 Vue 微前端架構的詳細信息和指南,包括如何使用 Vue.js 進行微前端開發。

  2. 社區論壇:Vue.js 社區論壇是一個活躍的地方,開發者可以在這裡提問、分享經驗和資源。

  3. 開源項目:GitHub 上有許多開源的 Vue 微前端項目,可以提供參考和學習的案例。

  4. 教程和博客:網路上有很多關於 Vue 微前端開發的教程和博客,可以幫助開發者學習和掌握相關技術。

  5. 微前端框架:如 qiankun、single-spa、wujie 等,這些框架提供了微前端架構的實現,可以幫助開發者快速搭建微前端項目。

Vue微前端項目常見問題解答

  1. 什麼是微前端?微前端是一種將多個小型前端應用組合成一個大型應用的架構方式,每個應用負責一部分功能,可以獨立開發和部署。

  2. 為什麼使用微前端?使用微前端可以提高開發效率、可維護性、可擴展性、用戶體驗和安全性。

  3. 如何選擇微前端框架?選擇微前端框架時,需要考慮框架的穩定性、社區支持、文檔完善程度、功能豐富程度等因素。

  4. 如何進行微前端項目的部署?微前端項目的部署需要考慮各個應用的獨立部署和協同部署,可以使用容器化技術或雲服務進行部署。

  5. 如何處理微前端項目中的樣式衝突?可以通過 CSS 隔離、命名空間、CSS-in-JS 等技術來處理微前端項目中的樣式衝突。

Vue微前端項目開發工具介紹

  1. Vue CLI:Vue CLI 是 Vue.js 官方提供的腳手架工具,可以幫助開發者快速搭建 Vue 項目,包括微前端項目。

  2. Webpack:Webpack 是一個現代 JavaScript 應用程式的靜態模塊打包器,可以用於構建 Vue 微前端項目。

  3. qiankun:qiankun 是一個基於 single-spa 的微前端框架,提供了微前端架構的實現,可以幫助開發者快速搭建微前端項目。

  4. single-spa:single-spa 是一個用於構建微前端架構的 JavaScript 庫,可以用於構建 Vue 微前端項目。

  5. wujie:wujie 是一個基於 Web Components 的微前端框架,提供了微前端架構的實現,可以幫助開發者快速搭建微前端項目。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄一、目的二、環境三、相關概念3.1 屏幕尺寸(screen size)3.2 屏幕解析度(Resolution)3.3 像素(pixel)3.4 ppi3.5 dpi3.6 dp/dip3.7 sp四、Q&A4.1 為啥dpi = 160?4.2 為啥Android要引入dp概念?五、代碼倉庫地 ...
  • 目錄效果圖思路具體實現步驟一:ItemView頂部偏移步驟二:繪製圓和線條註意:下標的獲取流程類的繪製總結 效果圖 可控制是否繪製在中間 控制繪製的線條是否為虛線 控制第一條數據圓頂部線條和最後一條數據圓底部線條是否繪製 除了gif圖片展示的屬性,還可以控制圓的大小顏色、圓是否有上和左偏移、線條顏色 ...
  • ‍ 寫在開頭 點贊 + 收藏 學會 在項目中我們可能會遇到當滑鼠在某個區域內,我們希望滾動滑鼠裡面的內容可以橫向滾動; 比如我們一些常見的後臺狀態欄: 那這種該怎麼寫?請看慄子 代碼如下: <template> <div> <div class="top"> <div class ...
  • 摘要:本文闡述了Nuxt.js作為基於Vue.js的伺服器端渲染框架,其在提升Web開發效率、確保代碼質量和優化應用性能方面的核心價值。通過詳盡的安裝步驟、配置說明、常見問題解決策略及進階部署方法,為開發者搭建和部署Nuxt.js項目提供了全方位指導。 ...
  • JS中有一些操作可以動態地執行JS代碼,並修改或新建詞法作用域,這種操作雖然帶來了更多的靈活性,但是會嚴重地影響到性能。 ...
  • 1. 不使用臨時變數來交換變數的值 2. 對象解構,讓數據訪問更便捷 3. 淺克隆對象 4. 合併對象 5. 清理數組 6. 將 NodeList 轉換為數組 7. 檢查數組是否滿足指定條件 8. 將文本複製到剪貼板 9. 刪除數組重覆項 10. 取兩個數組的交集 11. 求數組元素的總和 12. ... ...
  • 這篇文章介紹了Web Components技術,它允許開發者創建可復用、封裝良好的自定義HTML元素,並直接在瀏覽器中運行,無需依賴外部庫。通過組合HTML模板、Shadow DOM、自定義元素和HTML imports,Web Components增強了原生DOM的功能,提高了組件化開發的封裝性和... ...
  • 隨便寫的小網頁練習: 原視頻:十分鐘學會寫網頁【編程前端入門】 簡介: 本期重做了好幾遍,是全新的視角和概念,從瀏覽器底層渲染原理到實現網站的演示,一節課講透,必看的一期。後面不管是寫小程式還是App,都會用到這一期的概念。 這一期內容是我做完第一章個人網站後更新的,用來替代原先沒做好的第三節, ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...