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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...