亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

微前端父子應(yīng)用及兄弟應(yīng)用間組件或方法共享方案

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-07-24 14:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

背景

我們的很多web應(yīng)用在持續(xù)迭代中功能越來越復(fù)雜,參與的人員、團(tuán)隊(duì)不斷增多,導(dǎo)致項(xiàng)目出現(xiàn)難以維護(hù)的問題,這種情況PC端尤其常見,微前端為我們提供了一種高效管理復(fù)雜應(yīng)用的方案。但是在使用微前端的過程中,通常會(huì)有一些公共方法或公共組件,本文將對(duì)如何實(shí)現(xiàn)父子應(yīng)用以及兄弟應(yīng)用之間進(jìn)行方法及組件共享提出幾種解決方案以及其各自優(yōu)缺點(diǎn)及適用場(chǎng)景

模塊聯(lián)邦(Module Federation)

webpack5引入了模塊聯(lián)邦,可以讓不同的應(yīng)用共享模塊。具體步驟如下:

Remote(提供者模塊)

    // webpack.config.js
    module.exports = {
        // 其他配置...
        plugins: [
            new ModuleFederationPlugin({
            name: 'component_app',
            filename: 'remoteEntry.js',
            exposes: {
                './Button': './src/Button.jsx',
                './Dialog': './src/Dialog.jsx',
                './Logo': './src/Logo.jsx',
                './ToolTip': './src/ToolTip.jsx',
            },
            shared: { react: { singleton: true }, 'react-dom': { singleton: true } },
            }),
        ],
    };

作為提供方,component 將自己的 Button、Dialog等組件暴露出去,同時(shí)將 react 和 react-dom 這兩個(gè)依賴共享出去。

host(使用者模塊)

    // webpack.config.js
    module.exports = {
        entry: './index.js',
        // ...
        plugins: [
            new ModuleFederationPlugin({
            name: 'main_app',
            //遠(yuǎn)程訪問地址入口 
            remotes: {
                'component-app': 'component_app@http://www.qiaming.cn/images/chaijie_default.png/remoteEntry.js',
            },
            shared: { react: { singleton: true }, 'react-dom': { singleton: true } },
            })
        ],
    };

作為消費(fèi)者的 main 應(yīng)用需要定義需要消費(fèi)的應(yīng)用的名稱以及地址,同時(shí) main 應(yīng)用也將自己的 react 和 react-dom 這兩個(gè)依賴共享出去。

通過以上方式可以實(shí)現(xiàn)不同應(yīng)用之間共享公共方法和組件,雖然vite本身不支持模塊聯(lián)邦,但是我們可以使用vite-plugin-federation這個(gè)插件。
優(yōu)點(diǎn)

代碼共享:不同的微應(yīng)用可以共享相同的依賴庫,減少重復(fù)下載和加載,提高性能。

獨(dú)立部署:各個(gè)微應(yīng)用可以獨(dú)立開發(fā)、測(cè)試和部署,減少了團(tuán)隊(duì)之間的耦合,提高了開發(fā)效率。

動(dòng)態(tài)加載:可以在運(yùn)行時(shí)動(dòng)態(tài)加載模塊,按需加載,減少初始加載時(shí)間。

版本控制:支持不同版本的模塊共存,解決了版本沖突的問題。

團(tuán)隊(duì)協(xié)作:各個(gè)團(tuán)隊(duì)可以獨(dú)立開發(fā)自己的模塊,減少了對(duì)中央倉庫的依賴,提高了協(xié)作效率。

缺點(diǎn)

對(duì)于webpack5以下的應(yīng)用不支持

復(fù)雜性增加:配置和管理模塊聯(lián)邦需要一定的學(xué)習(xí)成本和經(jīng)驗(yàn),增加了項(xiàng)目的復(fù)雜性。

調(diào)試?yán)щy:由于模塊是動(dòng)態(tài)加載的,調(diào)試和追蹤問題可能會(huì)變得更加困難。

性能開銷:雖然減少了初始加載時(shí)間,但動(dòng)態(tài)加載模塊可能會(huì)在運(yùn)行時(shí)引入額外的性能開銷。

依賴管理:需要仔細(xì)管理共享依賴的版本,避免潛在的兼容性問題。

安全性:動(dòng)態(tài)加載外部模塊可能會(huì)引入安全風(fēng)險(xiǎn),需要額外的安全措施來防止惡意代碼注入。

NPM包

將共享組件打包成一個(gè) NPM 包,然后在父子應(yīng)用中分別安裝和使用。

創(chuàng)建共享組件/方法庫

import React from 'react';
const SharedComponent = () => 

Shared Component

; export default SharedComponent;

發(fā)布到NPM

npm publish

在父應(yīng)用和子應(yīng)用中安裝

npm install shared-component-library

在應(yīng)用中使用

 import SharedComponent from 'shared-component-library';

 function App() {
 return ;
 }

 export default App;

優(yōu)點(diǎn)
1. 模塊化管理:通過npm包管理公共組件,可以實(shí)現(xiàn)模塊化開發(fā),便于維護(hù)和更新。
2. 版本控制:npm包自帶版本控制功能,可以方便地進(jìn)行版本管理,確保不同微應(yīng)用使用兼容的組件版本。
3. 依賴管理:npm包可以自動(dòng)管理依賴關(guān)系,減少手動(dòng)處理依賴的復(fù)雜性。
4. 復(fù)用性高:公共組件封裝成npm包后,可以在多個(gè)微應(yīng)用中復(fù)用,減少重復(fù)開發(fā),提高開發(fā)效率。
5. 社區(qū)支持:npm生態(tài)系統(tǒng)龐大,很多問題可以通過社區(qū)資源解決,減少開發(fā)難度。

缺點(diǎn)
1. 發(fā)布和更新成本:每次更新公共組件都需要重新發(fā)布npm包,并在各個(gè)微應(yīng)用中更新依賴,增加了一定的工作量。
2. 版本兼容性問題:不同微應(yīng)用可能對(duì)同一組件有不同的版本需求,處理版本兼容性問題可能會(huì)比較復(fù)雜。
3. 性能開銷:由于npm包需要通過網(wǎng)絡(luò)下載和安裝,可能會(huì)增加構(gòu)建時(shí)間和初始加載時(shí)間。
4. 調(diào)試復(fù)雜性:npm包作為獨(dú)立模塊,調(diào)試時(shí)可能需要額外的配置和步驟,增加了調(diào)試的復(fù)雜性。
5. 安全性問題:使用第三方npm包時(shí),需要注意其安全性,防止引入潛在的安全漏洞。

使用 CDN

將共享組件打包并上傳到 CDN,然后在父子應(yīng)用中通過 URL 引入。

打包共享組件:

npm run build

上傳到 CDN。

在應(yīng)用中引入:


// 假設(shè)共享組件暴露為全局變量 SharedComponent
function App() {
  return ;
}
export default App;

優(yōu)點(diǎn)

性能提升:

快速加載:CDN 服務(wù)器分布在全球各地,用戶可以從最近的服務(wù)器獲取資源,從而減少加載時(shí)間。

緩存機(jī)制:CDN 提供了強(qiáng)大的緩存機(jī)制,可以減少服務(wù)器的負(fù)載,提高響應(yīng)速度。

帶寬優(yōu)化:

減輕服務(wù)器壓力:通過將靜態(tài)資源托管在 CDN 上,可以減輕原始服務(wù)器的帶寬壓力。

分布式傳輸:CDN 可以將流量分散到多個(gè)節(jié)點(diǎn),避免單點(diǎn)瓶頸。

高可用性:

冗余備份:CDN 通常有多個(gè)備份節(jié)點(diǎn),即使某個(gè)節(jié)點(diǎn)出現(xiàn)故障,其他節(jié)點(diǎn)也能繼續(xù)提供服務(wù)。

自動(dòng)故障切換:CDN 能夠自動(dòng)檢測(cè)并切換到可用的節(jié)點(diǎn),確保服務(wù)的連續(xù)性。

版本管理:

統(tǒng)一管理:通過 CDN 可以統(tǒng)一管理公共組件的版本,確保所有微應(yīng)用使用相同的組件版本,減少兼容性問題。

缺點(diǎn)

安全性問題:依賴第三方:使用第三方 CDN 服務(wù)可能會(huì)帶來安全隱患,特別是如果 CDN 提供商遭到攻擊或出現(xiàn)故障。

緩存一致性:

緩存更新延遲:CDN 的緩存機(jī)制可能導(dǎo)致更新的資源不能及時(shí)傳播到所有節(jié)點(diǎn),造成版本不一致的問題。

緩存失效:需要手動(dòng)管理緩存失效策略,否則可能會(huì)導(dǎo)致舊版本資源被長期緩存。

依賴性:

網(wǎng)絡(luò)依賴:如果用戶的網(wǎng)絡(luò)環(huán)境較差,可能會(huì)影響到通過 CDN 獲取資源的速度和穩(wěn)定性。

服務(wù)依賴:過度依賴 CDN 可能會(huì)導(dǎo)致在 CDN 服務(wù)出現(xiàn)問題時(shí),整個(gè)應(yīng)用的可用性受到影響。

使用 iframe

如果組件之間的交互較少,可以考慮使用 iframe 嵌入子應(yīng)用。
在父應(yīng)用中嵌入 iframe:


優(yōu)點(diǎn)

隔離性強(qiáng):iframe 提供了一個(gè)獨(dú)立的瀏覽上下文,能夠有效隔離不同微應(yīng)用之間的樣式和腳本,避免相互干擾。

安全性高:由于 iframe 的隔離特性,能夠防止跨站腳本攻擊(XSS)和其他安全問題。

兼容性好:iframe 是瀏覽器原生支持的技術(shù),兼容性較好,能夠在大多數(shù)現(xiàn)代瀏覽器中正常工作。

獨(dú)立部署:各個(gè)微應(yīng)用可以獨(dú)立部署和更新,不需要擔(dān)心對(duì)其他應(yīng)用的影響。

缺點(diǎn)

性能問題:iframe 會(huì)增加頁面的加載時(shí)間和內(nèi)存消耗,尤其是在嵌套多個(gè) iframe 的情況下。

通信復(fù)雜:iframe 與父頁面之間的通信需要通過 postMessage 等機(jī)制實(shí)現(xiàn),增加了開發(fā)的復(fù)雜性。

SEO 不友好:搜索引擎對(duì) iframe 內(nèi)容的抓取和索引支持較差,可能影響 SEO 效果。

樣式和布局問題:iframe 的內(nèi)容與父頁面的樣式和布局是獨(dú)立的,可能需要額外的工作來確保一致性。

調(diào)試?yán)щy:iframe 內(nèi)部的調(diào)試相對(duì)復(fù)雜,尤其是在跨域的情況下,調(diào)試工具的使用會(huì)受到限制。

總結(jié)

不同的方案有各自的特點(diǎn),需要根據(jù)具體的應(yīng)用場(chǎng)景和需求進(jìn)行權(quán)衡。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1298

    瀏覽量

    73402
  • 前端
    +關(guān)注

    關(guān)注

    1

    文章

    236

    瀏覽量

    18621
  • 組件
    +關(guān)注

    關(guān)注

    1

    文章

    545

    瀏覽量

    18882
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    永磁組件種類與性能保障方案

    永磁組件是以永磁材料為核心部件組裝而成的裝置,主要用于維持穩(wěn)定磁場(chǎng)實(shí)現(xiàn)能量轉(zhuǎn)換功能,廣泛應(yīng)用于工業(yè)設(shè)備、電機(jī)系統(tǒng)等領(lǐng)域。永磁組件主要由永磁材料(如釹鐵硼、鐵氧體等)與其他材料(不銹鋼、銅、塑膠等
    的頭像 發(fā)表于 10-21 08:49 ?123次閱讀
    永磁<b class='flag-5'>組件</b>種類與性能保障<b class='flag-5'>方案</b>

    射頻前端“硬骨頭”之戰(zhàn):昂瑞啃下中高端模組市場(chǎng)

    恭喜昂瑞二反掛網(wǎng),這是射頻前端行業(yè)的重大事件!筆者曾有幸與昂瑞團(tuán)隊(duì)有過接觸與交流,今天也來說說對(duì)昂瑞和射頻前端這個(gè)賽道的認(rèn)識(shí)。 ? ?
    的頭像 發(fā)表于 10-13 15:49 ?1075次閱讀

    射頻前端的反內(nèi)卷之路

    近期隨著卓勝和唯捷創(chuàng)芯半年報(bào)公布,兩家頭部射頻前端公司扣非后凈利潤都出現(xiàn)不同程度的虧損,一時(shí)關(guān)于射頻前端內(nèi)卷和關(guān)于射頻卷到“血流成河”的文章不斷爆出,筆者采訪了多位未上市或者在上市
    的頭像 發(fā)表于 08-29 10:39 ?434次閱讀

    不同場(chǎng)景下的文件共享方案-SMB/WebDAV/FTP/ZeroNews

    當(dāng)下,文件共享已成為企業(yè)協(xié)作和日常工作中不可或缺的一環(huán)。不同的場(chǎng)景對(duì)文件共享的需求各異,文件共享方案的選擇直接影響企業(yè)效率與數(shù)據(jù)安全。 本文從 技術(shù)特性 、 適用場(chǎng)景 、 安全機(jī)制 等
    的頭像 發(fā)表于 08-28 12:04 ?540次閱讀
    不同場(chǎng)景下的文件<b class='flag-5'>共享</b><b class='flag-5'>方案</b>-SMB/WebDAV/FTP/ZeroNews

    射頻前端公司如何抉擇?IDMDesign House

    近年來,隨著半導(dǎo)體行業(yè)受到的關(guān)注度和注入的資金不斷提升,國內(nèi)射頻前端廠商也發(fā)展迅速,催生出如卓勝、唯捷創(chuàng)芯、昂瑞、飛驤、銳石創(chuàng)芯和慧智等優(yōu)秀廠商。這些企業(yè)崛起到一定規(guī)模后,資金實(shí)
    的頭像 發(fā)表于 08-05 15:28 ?615次閱讀
    射頻<b class='flag-5'>前端</b>公司如何抉擇?IDM<b class='flag-5'>或</b>Design House

    恒訊科技分析:Ubuntu云服務(wù)器數(shù)據(jù)共享高效方案

    在當(dāng)今云計(jì)算時(shí)代,企業(yè)對(duì)于數(shù)據(jù)共享的需求日益增長,尤其是在使用Ubuntu云服務(wù)器的場(chǎng)景下,如何實(shí)現(xiàn)高效、安全的數(shù)據(jù)共享成為關(guān)鍵問題。本文將為您詳細(xì)介紹幾種主流的Ubuntu云服務(wù)器數(shù)據(jù)共享
    的頭像 發(fā)表于 07-09 21:40 ?1117次閱讀

    如何監(jiān)聽組件再次顯示的事件?

    ,從掛載卸載的角度觸發(fā),也有別的方法,比如用IF來作條件渲染,即監(jiān)聽Tabs的onChange事件,然后通過IF判斷這個(gè)index,來顯示子組件,效果是能實(shí)現(xiàn)的,但是會(huì)有一個(gè)很明顯的閃爍,當(dāng)然這可
    發(fā)表于 06-30 18:02

    多個(gè)i.MXRT共享一顆Flash啟動(dòng)的方法與實(shí)踐(下)

    在 《多個(gè)i.MXRT共享一顆Flash啟動(dòng)的方法與實(shí)踐(上)》 一文里痞子衡給大家從理論上介紹一種多 i.MXRT 共享 Flash 啟動(dòng)的方法,但是理論雖好,如果沒有經(jīng)過實(shí)踐驗(yàn)證切
    的頭像 發(fā)表于 06-05 10:04 ?943次閱讀
    多個(gè)i.MXRT<b class='flag-5'>共享</b>一顆Flash啟動(dòng)的<b class='flag-5'>方法</b>與實(shí)踐(下)

    DataAbility組件概述介紹

    應(yīng)用存儲(chǔ)數(shù)據(jù)的訪問,并提供與其他應(yīng)用共享數(shù)據(jù)的方法。DataAbility既可用于同設(shè)備不同應(yīng)用的數(shù)據(jù)共享,也支持跨設(shè)備不同應(yīng)用的數(shù)據(jù)共享。 數(shù)據(jù)的存放形式多樣,可以是數(shù)據(jù)庫,也可以是
    發(fā)表于 05-28 08:19

    UIAbility組件交互(設(shè)備內(nèi))說明

    UIAbility組件交互(設(shè)備內(nèi)) UIAbility是系統(tǒng)調(diào)度的最小單元。在設(shè)備內(nèi)的功能模塊之間跳轉(zhuǎn)時(shí),會(huì)涉及到啟動(dòng)特定的UIAbility,該UIAbility可以是應(yīng)用內(nèi)的其他
    發(fā)表于 05-16 06:12

    時(shí)源芯 ESD問題通用診斷分析方法:從現(xiàn)象定位到根治方案

    時(shí)源芯 ?專業(yè)EMC解決方案提供商 ?為EMC創(chuàng)造可能 靜電放電(ESD)是電子設(shè)備可靠性設(shè)計(jì)的核心挑戰(zhàn)之一。其瞬間高電壓(可達(dá)數(shù)十kV)、短脈沖(ns級(jí))的特性,極易通過直接接觸空間耦合侵入
    的頭像 發(fā)表于 02-27 11:14 ?1189次閱讀

    紙基流控芯片的加工方法和優(yōu)勢(shì)

    切割精度高、速度快、切口平整、無毛刺、熱影響區(qū)小等優(yōu)點(diǎn)。在紙基流控芯片的加工中,主要采用二氧化碳激光器和光纖激光器。 壓印技術(shù) 壓印技術(shù)是一種將圖案文字壓印到材料表面的加工方法。它具有簡便、快速、成本低等優(yōu)點(diǎn)
    的頭像 發(fā)表于 02-26 15:15 ?722次閱讀

    hyper-v共享,Hyper-V 共享:Hyper-V的資源共享設(shè)置

    的解決方案。今天就為大家介紹Hyper-V共享:Hyper-V的資源共享設(shè)置。 ? ?在Hyper-V虛擬化環(huán)境中,資源共享是實(shí)現(xiàn)高效管理和靈活部署的關(guān)鍵功能之一。Hyper-V提供了
    的頭像 發(fā)表于 02-07 10:26 ?1727次閱讀
    hyper-v<b class='flag-5'>共享</b>,Hyper-V <b class='flag-5'>共享</b>:Hyper-V的資源<b class='flag-5'>共享</b>設(shè)置

    hyper-v共享,hyper-v共享:實(shí)現(xiàn)主機(jī)與虛擬機(jī)之間高效文件共享的最佳實(shí)踐

    在日常工作中,我們常常需要處理大量的文件和數(shù)據(jù),這些重復(fù)性任務(wù)不僅耗時(shí)耗力,還容易因疲勞而導(dǎo)致錯(cuò)誤。幸運(yùn)的是,批量管理工具的出現(xiàn)為這一問題提供了高效的解決方案。今天就為大家介紹hyper-v共享
    的頭像 發(fā)表于 01-24 14:23 ?2186次閱讀
    hyper-v<b class='flag-5'>共享</b>,hyper-v<b class='flag-5'>共享</b>:實(shí)現(xiàn)主機(jī)與虛擬機(jī)之間高效文件<b class='flag-5'>共享</b>的最佳實(shí)踐

    ADS8588在做多通道采集時(shí),ADS8588在處理輸入信號(hào)時(shí)有幾十微秒的延時(shí),請(qǐng)問有無解決前端延時(shí)的方法

    解決前端延時(shí)方法嗎,ADS8588有帶S和帶后綴的,我們用的是帶S的,那么帶H的內(nèi)部的前端是否的延時(shí)問題是否有改進(jìn),還是只是采樣速率提高到500KSPS,請(qǐng)TI工程師給提供一個(gè)改進(jìn)方案
    發(fā)表于 12-10 07:55