微前端 - 以無界為例


一、微前端核心概念

微前端是一種將單體前端應用拆分為多個獨立子應用的架構模式,每個子應用可獨立開發、部署和運行,具備以下特點:

  1. 技術棧無關性:允許主應用和子應用使用不同框架(如 React + Vue)。
  2. 獨立部署:子應用獨立構建、測試和發布,互不影響。
  3. 沙箱隔離:通過 JavaScript/CSS 沙箱避免全局污染。
  4. 動態加載:按需加載子應用資源,提升性能。

二、無界框架核心機制

無界(Wujie) 是騰訊開源的微前端框架,核心優勢:
? 基于 Web Components:天然支持樣式隔離。
? Iframe 沙箱:實現 JS 執行環境的完全隔離。
? 子應用保活:切換頁面時保留子應用狀態,避免重復渲染。
? 通信簡化:內置 props 傳遞和事件總線機制。


三、實戰示例:React 主應用 + Vue 子應用

略復雜的demo

1. 主應用(React)配置

步驟說明:主應用負責路由管理和子應用容器渲染。

// 主應用:src/App.jsx
import React from 'react';
import { WujieReact } from "wujie-react";function App() {return (<div>{/* 導航菜單 */}<nav><Link to="/vue-app">Vue 子應用</Link><Link to="/react-app">React 子應用</Link></nav>{/* Vue 子應用容器 */}<WujieReactname="vueApp" url="http://localhost:3001" sync={true}props={{ user: { name: "Alice" } }}/>{/* React 子應用容器 */}<WujieReactname="reactApp"url="http://localhost:3002"sync={true}/></div>);
}export default App;
2. Vue 子應用配置

關鍵點:適配無界生命周期,接收主應用傳遞的 props

// Vue 子應用:src/main.js
import { createApp } from 'vue';
import App from './App.vue';if (window.__POWERED_BY_WUJIE__) {// 無界環境:掛載到無界提供的容器window.__WUJIE_MOUNT = () => {const app = createApp(App);// 接收主應用傳遞的 propsapp.config.globalProperties.$wujieProps = window.$wujie.props;app.mount('#app');};// 子應用卸載時清理window.__WUJIE_UNMOUNT = () => {app.unmount();};
} else {// 獨立運行模式createApp(App).mount('#app');
}
3. React 子應用配置
// React 子應用:src/index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';if (window.__POWERED_BY_WUJIE__) {// 無界環境掛載window.__WUJIE_MOUNT = () => {ReactDOM.render(<App />, document.getElementById('root'));};window.__WUJIE_UNMOUNT = () => {ReactDOM.unmountComponentAtNode(document.getElementById('root'));};
} else {// 獨立運行ReactDOM.render(<App />, document.getElementById('root'));
}

四、跨框架通信示例

1. 主應用向子應用傳遞數據(Props)
// 主應用傳遞動態數據
<WujieReactname="vueApp"url="http://localhost:3001":props="{ user: currentUser,onUpdate: (data) => console.log('收到子應用數據:', data) }"
/>
2. Vue 子應用接收并使用 Props
<!-- Vue 子應用組件 -->
<template><div><h2>用戶: {{ $wujieProps.user.name }}</h2><button @click="sendToMain">發送數據到主應用</button></div>
</template><script>
export default {methods: {sendToMain() {// 調用主應用傳遞的回調函數this.$wujieProps.onUpdate({ message: '來自 Vue 的數據' });}}
}
</script>
3. React 子應用與主應用通信
// React 子應用組件
import { useEffect } from 'react';export default function ReactApp() {// 接收主應用數據const user = window.$wujie?.props.user;// 向主應用發送事件const handleClick = () => {window.$wujie?.bus.emit('react-event', { time: Date.now() });};return (<div><p>主應用用戶: {user?.name}</p><button onClick={handleClick}>觸發事件</button></div>);
}

五、構建與部署配置

1. 子應用 Webpack 配置(Vue)
// vue.config.js
module.exports = {publicPath: process.env.NODE_ENV === 'production' ? 'http://cdn.com/vue-app/' : '/',devServer: {headers: {'Access-Control-Allow-Origin': '*' // 允許跨域}}
};
2. 子應用 Webpack 配置(React)
// config-overrides.js (使用 react-app-rewired)
module.exports = {webpack: (config) => {config.output.library = 'reactApp';config.output.libraryTarget = 'umd';config.output.publicPath = process.env.NODE_ENV === 'production' ? 'http://cdn.com/react-app/' : 'http://localhost:3002/';return config;},devServer: (config) => {config.headers = { 'Access-Control-Allow-Origin': '*' };return config;}
};

六、無界框架核心優勢對比

功能無界 (Wujie)qiankun
隔離機制Web Components + iframe 雙重沙箱Proxy 代理 + 樣式重寫
通信方式Props + EventBus + URL 同步全局狀態管理(如 Redux)
子應用保活? 支持(保留 DOM 和狀態)? 每次切換重新掛載

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

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

相關文章

企業級日志分析平臺: ELK 集群搭建指南

前言&#xff1a;在當今數字化時代&#xff0c;數據已經成為企業決策的核心驅動力。無論是日志分析、用戶行為追蹤&#xff0c;還是實時監控和異常檢測&#xff0c;高效的數據處理和可視化能力都至關重要。ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;作為全球…

1.2-WAF\CDN\OSS\反向代理\負載均衡

WAF&#xff1a;就是網站應用防火墻&#xff0c;有硬件類、軟件類、云WAF&#xff1b; 還有網站內置的WAF&#xff0c;內置的WAF就是直接嵌在代碼中的安全防護代碼 硬件類&#xff1a;Imperva、天清WAG 軟件&#xff1a;安全狗、D盾、云鎖 云&#xff1a;阿里云盾、騰訊云WA…

MybatisPlus(SpringBoot版)學習第四講:常用注解

目錄 1.TableName 1.1 問題 1.2 通過TableName解決問題 1.3 通過全局配置解決問題 2.TableId 2.1 問題 2.2 通過TableId解決問題 2.3 TableId的value屬性 2.4 TableId的type屬性 2.5 雪花算法 1.背景 2.數據庫分表 ①垂直分表 ②水平分表 1>主鍵自增 2>取…

第二屆計算機網絡和云計算國際會議(CNCC 2025)

重要信息 官網&#xff1a;www.iccncc.org 時間&#xff1a;2025年4月11-13日 地點&#xff1a;中國南昌 簡介 第二屆計算機網絡和云計算國際會議&#xff08;CNCC 2025&#xff09;將于2025年4月11-13日在中國南昌召開。圍繞“計算機網絡”與“云計算”展開研討&#xff…

【大模型基礎_毛玉仁】5.4 定位編輯法:ROME

目錄 5.4 定位編輯法&#xff1a;ROME5.4.1 知識存儲位置1&#xff09;因果跟蹤實驗2&#xff09;阻斷實驗 5.4.2 知識存儲機制5.4.3 精準知識編輯1&#xff09;確定鍵向量2&#xff09;優化值向量3&#xff09;插入知識 5.4 定位編輯法&#xff1a;ROME 定位編輯&#xff1a;…

橫掃SQL面試——連續性登錄問題

橫掃SQL面試 &#x1f4cc; 連續性登錄問題 在互聯網公司的SQL面試中&#xff0c;連續性問題堪稱“必考之王”。&#x1f4bb;&#x1f50d; 用戶連續登錄7天送優惠券&#x1f31f;&#xff0c;服務器連續報警3次觸發熔斷??&#xff0c;圖書館連續3天人流破百開啟限流?” …

Spring AI Alibaba 對話記憶使用

一、對話記憶 (ChatMemory)簡介 1、對話記憶介紹 ”大模型的對話記憶”這一概念&#xff0c;根植于人工智能與自然語言處理領域&#xff0c;特別是針對具有深度學習能力的大型語言模型而言&#xff0c;它指的是模型在與用戶進行交互式對話過程中&#xff0c;能夠追蹤、理解并利…

vdi模式是什么

?VDI模式&#xff08;Virtual Desktop Infrastructure&#xff09;是一種基于服務器的計算模型&#xff0c;其核心思想是將所有計算和存儲資源集中在服務器上&#xff0c;用戶通過前端設備&#xff08;如瘦客戶機&#xff09;訪問服務器上的虛擬桌面?? VDI模式的工作原理 在…

【分布式】深入剖析 Sentinel 限流:原理、實現

在當今分布式系統盛行的時代&#xff0c;流量的劇增給系統穩定性帶來了巨大挑戰。Sentinel 作為一款強大的流量控制組件&#xff0c;在保障系統平穩運行方面發揮著關鍵作用。本文將深入探討 Sentinel 限流的原理、實現方案以及其優缺點&#xff0c;助力開發者更好地運用這一工具…

c#winform,倒鴨子字幕效果,typemonkey字幕效果,抖音瀑布流字幕效果

不廢話 直接上效果圖 C# winform 開發抖音的瀑布流字幕。 也是typemonkey插件字幕效果 或者咱再網上常說的倒鴨子字幕效果 主要功能 1&#xff0c;軟件可以自定義添加字幕內容 2&#xff0c;軟件可以添加字幕顯示的時間區間 3&#xff0c;可以自定義字幕顏色&#xff0c;可以隨…

Pycharm(八):字符串切片

一、字符串分片介紹 對操作的對象截取其中一部分的操作&#xff0c;比如想要獲取字符串“888666qq.com前面的qq號的時候就可以用切片。 字符串、列表、元組都支持切片操作。 語法&#xff1a;字符串變量名 [起始:結束:步長] 口訣&#xff1a;切片其實很簡單&#xff0c;只顧頭來…

圖片解釋git的底層工作原理

&#xff08;圖片來源&#xff1a;自己畫的&#xff09; 基于同一個commit創建新分支 &#xff08;圖片來源&#xff1a;書籍《Linux運維之道》 ISBN 9787121461811&#xff09; 在新分支上修改然后commit一次 &#xff08;圖片來源&#xff1a;書籍《Linux運維之道》 ISBN 978…

leetcode994.腐爛的橘子

思路源自 【力扣hot100】【LeetCode 994】腐爛的橘子&#xff5c;多源BFS 這里圖中的腐爛的的橘子是同時對周圍進行腐化&#xff0c;所以采用多源bfs就能解決 多源bfs與單源bfs的區別就在于隊列取出時一輪是取出隊列當中的全部元素 class Solution {public int orangesRotti…

【華為OD技術面試真題 - 技術面】- Java面試題(15)

華為OD面試真題精選 專欄:華為OD面試真題精選 目錄: 2024華為OD面試手撕代碼真題目錄以及八股文真題目錄 介紹下TCP/UDP TCP(傳輸控制協議)和 UDP(用戶數據報協議) TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)是兩種常見的傳輸層協議,主要…

?在 Fedora 系統下備份遠程 Windows SQL Server 數據庫的完整方案

?一、環境準備與工具安裝? ?1. 安裝 Microsoft SQL Server 命令行工具? Fedora 需安裝 mssql-tools 和 ODBC 驅動&#xff1a; # 添加 Microsoft 倉庫 sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo# 安裝工具包 …

DeepSeek:巧用前沿AI技術,開啟智能未來新篇章

引言 近年來&#xff0c;人工智能&#xff08;AI&#xff09;技術迅猛發展&#xff0c;大模型成為全球科技競爭的核心賽道。在這場AI革命中&#xff0c;DeepSeek作為中國領先的大模型研發團隊&#xff0c;憑借其創新的技術架構、高效的訓練方法和廣泛的應用場景&#xff0c;迅…

R語言實現軌跡分析--traj和lcmm包體會

R語言實現軌跡分析–traj和lcmm包體會 軌跡分析是對重復測量數據的一種歸納&#xff0c;轉化為一種分類變量&#xff0c;比如手術后1&#xff5e;7天內的疼痛評分&#xff0c;可以形成術后急性痛軌跡。形成的軌跡作為一個分類變量&#xff0c;可以用于預測疾病的預后&#xff…

Vue 3 事件總線詳解:構建組件間高效通信的橋梁

Vue 3 事件總線詳解&#xff1a;構建組件間高效通信的橋梁 為什么需要事件總線&#xff1f;使用 mitt 實現事件總線1. 安裝 mitt2. 創建事件總線3. 在組件中使用事件總線發送端組件&#xff08;例如 ComponentA.vue&#xff09;接收端組件&#xff08;例如 ComponentB.vue&…

MySQL的基礎語法1(增刪改查、DDL、DML、DQL和DCL)

目錄 一、基本介紹 二、SQL通用語法 三、SQL分類(DDL、DML、DQL、DCL) 1.DDL 1.1數據庫操作 1.2表操作 1.2.1表操作-查詢創建 1.2.2表操作-數據類型 1&#xff09;數值類型 2&#xff09;字符串類型 3&#xff09;日期時間類型?編輯 4&#xff09;表操作-案例 1.2.3…

【NLP】15. NLP推理方法詳解 --- 動態規劃:序列標注,語法解析,共同指代

動態規劃 (Dynamic Programming) 動態規劃&#xff08;Dynamic Programming&#xff0c;簡稱 DP&#xff09;是一種通過將問題分解為較小子問題來優化計算效率的技術。它特別適用于優化最優解問題&#xff0c;比如序列標注&#xff08;sequence tagging&#xff09;這類任務。…