微前端的不斷探索之路—— qiankun 實戰與思考!

全文目錄:

    • 開篇語
    • 📝 前言
    • 🛠? 微前端是什么?為什么需要它?
      • 💡 先從“前端痛點”說起
      • 🧐 微前端的優勢
    • 🤹?♀? qiankun 簡介與核心概念
      • 🌟 為什么選擇 qiankun?
      • 📖 核心概念
    • 🖥? qiankun 實戰案例——從 0 到 1 實現微前端
      • 🎯 案例目標
      • 📂 項目結構
      • 🚀 實現步驟
        • **1. 主應用開發**
        • **2. 子應用開發**
    • 📈 進階拓展:微前端的最佳實踐
      • 🛡? 樣式隔離
      • 🧩 共享數據
    • 🎉 總結
    • 文末

開篇語

哈嘍,各位小伙伴們,你們好呀,我是喵手。運營社區:C站/掘金/騰訊云/阿里云/華為云/51CTO;歡迎大家常來逛逛

??今天我要給大家分享一些自己日常學習到的一些知識點,并以文字的形式跟大家一起交流,互相學習,一個人雖可以走的更快,但一群人可以走的更遠。

??我是一名后端開發愛好者,工作日常接觸到最多的就是Java語言啦,所以我都盡量抽業余時間把自己所學到所會的,通過文章的形式進行輸出,希望以這種方式幫助到更多的初學者或者想入門的小伙伴們,同時也能對自己的技術進行沉淀,加以復盤,查缺補漏。

小伙伴們在批閱的過程中,如果覺得文章不錯,歡迎點贊、收藏、關注哦。三連即是對作者我寫作道路上最好的鼓勵與支持!

📝 前言

前端世界的技術更新頻率就像是一場沒有終點的馬拉松,快到你剛熟悉一個框架,下一個趨勢就已經掀起了新的浪潮。而近年來,微前端作為“架構界的頂流”,用它的靈活性和模塊化特性給我們帶來了全新的開發思路。

今天,咱們就來聊聊微前端框架中的**“網紅”選手**——qiankun。從它的基礎概念到實戰案例,再到我們在實際開發中的一些思考,希望帶你更深地感受這個框架的魅力。


🛠? 微前端是什么?為什么需要它?

💡 先從“前端痛點”說起

在前端項目逐漸復雜化后,我們常會遇到以下問題:

  1. 大而全的單體應用:代碼膨脹到讓人想辭職;
  2. 團隊協作的尷尬:多個團隊一起開發時,分工不清、沖突頻繁;
  3. 技術棧的約束:新舊項目技術棧不統一,升級是場噩夢。

微前端的出現就是為了解決這些問題,簡單來說,它就是把前端項目“拆分成小塊”,讓每個塊獨立開發、獨立運行,最后再把它們整合到一起。

🧐 微前端的優勢

  • 獨立性:每個子應用可以獨立運行、部署,甚至使用不同的框架。
  • 技術棧自由:團隊 A 用 React,團隊 B 用 Vue?完全沒問題!
  • 漸進式升級:老舊的代碼不用全盤推翻,可以逐步替換。

🤹?♀? qiankun 簡介與核心概念

🌟 為什么選擇 qiankun?

qiankun 是基于 single-spa 的微前端實現,擁有以下優點:

  • 簡單易用:開箱即用,幾乎沒有學習成本;
  • 完整性:解決了主流微前端框架的坑點,比如樣式隔離、JS 沙箱等;
  • 文檔友好:中文社區給了我們無比友好的學習環境。

📖 核心概念

  1. 主應用與子應用
    主應用負責整體布局和子應用的加載,子應用專注于自己的功能開發。

  2. 沙箱機制
    通過沙箱隔離子應用之間的樣式、JS,避免沖突。

  3. 生命周期
    qiankun 會為子應用提供生命周期鉤子,比如 mountunmount,讓你可以精準控制它的加載與卸載。


🖥? qiankun 實戰案例——從 0 到 1 實現微前端

🎯 案例目標

實現一個簡單的微前端項目,包括:

  1. 主應用使用 Vue 實現;
  2. 子應用分別使用 React 和 Vue。

📂 項目結構

micro-frontend-demo/
├── main-app/        # 主應用(Vue)
├── sub-app-react/   # 子應用1(React)
├── sub-app-vue/     # 子應用2(Vue)

🚀 實現步驟

1. 主應用開發

主應用技術棧:Vue3 + qiankun

  1. 安裝依賴

    npm install qiankun --save
    
  2. 主應用代碼實現

    // main.js
    import { createApp } from 'vue';
    import App from './App.vue';
    import { registerMicroApps, start } from 'qiankun';const app = createApp(App);// 注冊子應用
    registerMicroApps([{name: 'sub-app-react',entry: '//localhost:3000',  // 子應用的入口container: '#sub-app-container', // 子應用掛載的容器activeRule: '/react', // 激活規則},{name: 'sub-app-vue',entry: '//localhost:8081',container: '#sub-app-container',activeRule: '/vue',},
    ]);// 啟動 qiankun
    start();app.mount('#app');
    
  3. 主應用的頁面

    <template><div><h1>主應用</h1><nav><a href="/react">React 子應用</a><a href="/vue">Vue 子應用</a></nav><div id="sub-app-container"></div></div>
    </template>
    
2. 子應用開發

子應用 1:React

  1. 配置入口
    package.json 中添加:

    {"name": "sub-app-react","main": "index.js","homepage": "/react"
    }
    
  2. 生命周期鉤子

    import ReactDOM from 'react-dom';
    import App from './App';function render() {ReactDOM.render(<App />, document.getElementById('root'));
    }if (!window.__POWERED_BY_QIANKUN__) {render();
    }export async function bootstrap() {console.log('React app bootstraped');
    }export async function mount() {render();
    }export async function unmount() {ReactDOM.unmountComponentAtNode(document.getElementById('root'));
    }
    

子應用 2:Vue
類似 React,只需調整為 Vue 的生命周期鉤子即可。


📈 進階拓展:微前端的最佳實踐

🛡? 樣式隔離

使用 qiankun 提供的樣式隔離能力,防止主應用和子應用之間的 CSS 沖突。

🧩 共享數據

利用 qiankun 的通信 API 實現主應用與子應用之間的數據共享。例如:

// 主應用中
import { initGlobalState } from 'qiankun';const actions = initGlobalState({user: 'Alice',
});actions.onGlobalStateChange((state) => {console.log('主應用監聽到狀態變化:', state);
});// 子應用中
import { getActions } from 'qiankun';const actions = getActions();
actions.setGlobalState({ user: 'Bob' });

🎉 總結

微前端的魅力在于將復雜拆解為簡單,而 qiankun 則以其易用性和穩定性成為了開發者的最佳選擇。在本文中,我們從理論到實踐,全方位體驗了 qiankun 的強大功能。不僅如此,我們還探討了它在實際開發中的一些進階玩法。

🌟 如果你還在為前端項目的復雜性頭疼,不妨試試微前端!期待你的探索之路更有趣、更高效。

… …

文末

好啦,以上就是我這期的全部內容,如果有任何疑問,歡迎下方留言哦,咱們下期見。

… …

學習不分先后,知識不分多少;事無巨細,當以虛心求教;三人行,必有我師焉!!!

wished for you successed !!!


??若喜歡我,就請關注我叭。

??若對您有用,就請點贊叭。
??若有疑問,就請評論留言告訴我叭。


版權聲明:本文由作者原創,轉載請注明出處,謝謝支持!

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

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

相關文章

拆解加密黑盒

在Web安全與數據爬取領域&#xff0c;JavaScript加密黑盒的逆向工程是核心技術之一。本文基于行業通用方法論與實戰案例&#xff0c;提煉出一套標準化的五步逆向流程&#xff0c;涵蓋目標定位、代碼提取、邏輯分析、算法復現到自動化集成的全鏈路解決方案&#xff0c;幫助開發者…

IntelliJ IDEA 中安裝和使用通義靈碼 AI 編程助手教程

隨著人工智能技術的發展&#xff0c;AI 編程助手逐漸成為提升開發效率的強大工具。通義靈碼是阿里云推出的一款 AI 編程助手&#xff0c;它能夠幫助開發者實現智能代碼補全、代碼解釋、生成單元測試等功能&#xff0c;極大地提升了編程效率和代碼質量。 IntelliJ IDEA 是一款廣…

Redis 特性和應用場景

1. Redis特性 1&#xff09;In-memory data structures Redis 在內存中存儲數據&#xff0c;key 是 String&#xff0c; value 可以是 hash, list, set, sorted set, stream ... MySQL主要是通過 “表” 的方式來存儲組織數據的 “關系型數據庫” Redis主要是通過 “鍵值對”…

每天五分鐘深度學習:非線性激活函數的導數

本文重點 本文探討了神經網絡中幾種常見非線性激活函數(Sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Softmax)的導數特性。通過對各激活函數導數的數學推導與實際應用分析,揭示了不同激活函數在梯度傳播、收斂速度及模型表達能力方面的差異。研究發現,ReLU及其變體在計算效率與…

redis哨兵機制 和集群有什么區別:

主從&#xff1a; 包括一個master節點 和多個slave節點&#xff1a; master節點負責數據的讀寫&#xff0c;slave節點負責數據的讀取&#xff0c;master節點收到數據變更&#xff0c;會同步到slave節點 去實現數據的同步。通過這樣一個架構可以去實現redis的一個讀寫分離。提升…

關于讀完《毛澤東選集》的一些思考迭代

看完毛選前四卷&#xff0c;從革命初期一直講到抗戰勝利&#xff0c;共75.8W字&#xff0c;花費67個小時讀完。從1925年發表的“中國社會各階級的分析”&#xff0c;跨越100年&#xff0c;通過67個小時向主席學習到&#xff1a; 實事求是 從實踐中來再到實踐中去 用辯證與發展…

MySQL——MVCC(多版本并發控制)

目錄 1.MVCC多版本并發控制的一些基本概念 MVCC實現原理 記錄中的隱藏字段 undo log undo log 版本鏈 ReadView 數據訪問規則 具體實現邏輯 總結 1.MVCC多版本并發控制的一些基本概念 當前讀&#xff1a;該取的是記錄的最新版本&#xff0c;讀取時還要保證其他并發事務…

【Linux篇】深入理解文件系統:從基礎概念到 ext2 文件系統的應用與解析

文件系統的魔法&#xff1a;讓計算機理解并存儲你的數據 一. 文件系統1.1 塊1.2 分區1.3 inode(索引節點) 二. ext2文件系統2.1 認識文件系統2.2 Block Group (塊組)2.2.1 Block Group 的基本概念2.2.2 Block Group 的作用 2.3 塊組內部結構2.3.1 超級塊&#xff08;Super Bloc…

3 VS Code 配置優化與實用插件推薦:settings.json 詳解、CodeGeeX 智能編程助手及插件離線安裝方法

1 優化 settings.json 文件 1.1 settings.json 簡介 settings.json 是 VS Code 的核心配置文件&#xff0c;用于存儲用戶的個性化設置和偏好。通過該文件&#xff0c;用戶可以自定義和覆蓋 VS Code 的默認行為&#xff0c;包括但不限于以下方面&#xff1a; 編輯器外觀&#…

【Java面試系列】Spring Cloud微服務架構中的分布式事務處理與Seata框架實現原理詳解 - 3-5年Java開發必備知識

【Java面試系列】Spring Cloud微服務架構中的分布式事務處理與Seata框架實現原理詳解 - 3-5年Java開發必備知識 1. 引言 在微服務架構中&#xff0c;分布式事務處理是一個復雜且常見的問題。隨著業務規模的擴大&#xff0c;單體應用逐漸拆分為多個微服務&#xff0c;每個服務…

力扣面試150題--有效的數獨

Day 19 題目描述 思路 其實還挺簡單的&#xff0c;主要的難點在于如何判斷每個小數獨是否滿足要求 詳細見代碼 class Solution {public boolean isValidSudoku(char[][] board) {HashSet<Character> set new HashSet<>();//處理行HashSet<Character> set1…

達夢數據庫-學習-15-大內存SQL相關視圖介紹

目錄 一、環境信息 二、介紹 三、數據字典表 1、V$MEM_POOL 2、V$SQL_STAT 3、V$SQL_STAT_HISTORY 4、V$LARGE_MEM_SQLS 5、V$SYSTEM_LARGE_MEM_SQLS 四、總結 一、環境信息 名稱值CPU12th Gen Intel(R) Core(TM) i7-12700H操作系統CentOS Linux release 7.9.2009 (Co…

從0到1使用C++操作MSXML

1. 引言 MSXML&#xff08;Microsoft XML Core Services&#xff09;是微軟提供的一套用于處理XML的COM組件庫&#xff0c;廣泛應用于Windows平臺的XML解析、驗證、轉換等操作。本文將詳細介紹如何從零開始&#xff0c;在C中使用MSXML解析和操作XML文件&#xff0c;包含完整的…

Windows 系統下用 VMware 安裝 CentOS 7 虛擬機超詳細教程(包含VMware和鏡像安裝包)

前言 資源 一、準備工作 &#xff08;一&#xff09;下載 VMware Workstation &#xff08;二&#xff09;下載 CentOS 7 鏡像 二、安裝 VMware Workstation&#xff08;比較簡單&#xff0c;按下面走即可&#xff09; 三、創建 CentOS 7 虛擬機 四、安裝 CentOS 7 系統…

應用安全系列之四十五:日志偽造(Log_Forging)之三

1、簡介 針對Java的日志系統有多種&#xff0c;本文主要描述如何通過修改配置文件來解決logback和log4j的日志偽造問題。 2、logback 2.1、系統提供的解決方案 在logback.xml中配置編碼器自動轉義特殊字符&#xff1a; 復制 <configuration><appender name"C…

(五)循環鏈表、雙向鏈表

循環鏈表 介紹 在單選鏈表基礎上&#xff0c;下一個節點指向前一個節點&#xff0c;最后一個節點指向起點 封裝循環鏈表 為了讓循環鏈表可以繼承自單向鏈表&#xff0c;對其進行重構 給其增加一個tail屬性&#xff08;尾節點&#xff09;&#xff0c;對各方法進行重寫整理 …

仙劍奇俠傳98柔情版游戲秘籍

戰斗秘技&#xff1a;在戰斗中輸入 “cheat”&#xff0c;然后輸入 “v” 直接取勝&#xff1b;輸入 “y” 敵人不攻擊。另外&#xff0c;在戰斗中按 “XJPXZ123” 加 “shift” 鍵&#xff0c;攻擊力增加 1000&#xff05;。等級提升秘籍&#xff1a;當李逍遙等級到達 99 級時…

常見的歸一化(Normalization)方法

本文詳解深度學習中常見的歸一化方法。 【歸一化是將數據按比例縮放&#xff0c;使之落入一個特定的區間】目錄 1. 批量歸一化&#xff08;Batch Normalization&#xff0c;BN&#xff09;1.1 數學原理1.2 代碼示例 2. 層歸一化&#xff08;Layer Normalization&#xff0c;LN&…

行星際激波在日球層中的傳播:Propagation of Interplanetary Shocks in the Heliosphere (參考文獻部分)

行星際激波在日球層中的傳播&#xff1a;Propagation of Interplanetary Shocks in the Heliosphere &#xff08;第一部分&#xff09;-CSDN博客 行星際激波在日球層中的傳播&#xff1a;Propagation of Interplanetary Shocks in the Heliosphere &#xff08;第二部分&…

大模型可視化應用敏捷開發方案:Dify+Echarts

大模型相關目錄 大模型&#xff0c;包括部署微調prompt/Agent應用開發、知識庫增強、數據庫增強、知識圖譜增強、自然語言處理、多模態等大模型應用開發內容 從0起步&#xff0c;揚帆起航。 Moe模式&#xff1a;或將是最好的大模型應用開發路徑一文帶你了解大模型RAG詳細記錄…