最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3如何對內(nèi)嵌Iframe組件進(jìn)行緩存

 更新時間:2025年04月25日 09:00:46   投稿:jingxian  
這篇文章主要介紹了Vue3如何對內(nèi)嵌Iframe組件進(jìn)行緩存問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1:應(yīng)用場景

對于系統(tǒng)內(nèi)所有內(nèi)嵌iframe 的頁面均通過同一個路由'/iframe', 在router.query內(nèi)傳入不同src 參數(shù),在同一組件內(nèi)顯示iframe 內(nèi)嵌頁面,對這些頁面分別進(jìn)行緩存。

主要是通過v-show 控制顯示隱藏從而達(dá)到iframe 緩存邏輯

2:路由文件配置 router/index.ts

{
name: 'iframe',
path: '/iframe',
component: Iframe,
},

3:修改home.vue 文件

3.1 增加變量判斷是否先死iframe 組件

// 根據(jù)路由判斷是否顯示Iframe 組件
const iframeShow = computed(() => route.value?.path.indexOf('/iframe') === 0);

3.2 在state 中添加響應(yīng)式數(shù)據(jù)

wrapperMap, iframeComList

const state = reactive({
// 保存相同iframe 組件修改之后的組件名稱同iframe套殼組件的映射關(guān)系
wrapperMap: new Map(),
// wrapperMap 轉(zhuǎn)換成的數(shù)組,循環(huán)遍歷生成iframe組件
iframeComList: [] as any,
});

3.3 對同一iframe

路由傳入不同參數(shù)的組件套殼修改name 進(jìn)行緩存

const wrap = (name:any, query:any, component:any) => {
let wrapper;

const wrapperName = name + '-' + query.catchName;
if (state.wrapperMap.has(wrapperName)) {
wrapper = state.wrapperMap.get(wrapperName);
} else {
wrapper = {
name: wrapperName,

render() {
return h('div', { className: 'vaf-page-wrapper' }, component);
},

};

state.wrapperMap.set(wrapperName, wrapper);
}
return h(wrapper);
};

3.4 在template 部分增加組件

通過v-show 控制ifram 路由緩存的組件是否渲染

<!-- :class="{'content-fill':!showAside}" -->
<router-view v-if="!iframeShow" />
<!-- iframe 組件緩存 -->
<div v-show="iframeShow" class="iframe-container">
<component
:is="h(wrapperMap.get(item[0]))"
v-for="(item) in iframeComList"
v-show="iframeShow && item[0] === (String(route?.name) + '-'+ route.query.VIRTUAL_NAME)"
:key="item[0]"
/>
</div>

3.5 監(jiān)聽路由

/**
* 監(jiān)聽路由生成新的iframe 組件并保存
*/
watch(
() => route,
(newValue, oldValue) => {
if (route.value.path.indexOf('/iframe') === 0) {
wrap(route.value.name, route.value.query, h(Iframe));
nextTick(() => {
state.iframeComList = [...state.wrapperMap];
});
}
},
{
deep: true,
immediate: true,
},
);

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決vue項目中出現(xiàn)Invalid Host header的問題

    解決vue項目中出現(xiàn)Invalid Host header的問題

    這篇文章主要介紹了解決vue項目中出現(xiàn)"Invalid Host header"的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 分離vue文件中css、js代碼的簡單技巧

    分離vue文件中css、js代碼的簡單技巧

    這篇文章主要給大家介紹了關(guān)于分離vue文件中css、js代碼的簡單技巧,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-03-03
  • vue 表單之通過v-model綁定單選按鈕radio

    vue 表單之通過v-model綁定單選按鈕radio

    這篇文章主要介紹了vue 表單之v-model綁定單選按鈕radio的實(shí)例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • vue-router子路由的實(shí)現(xiàn)方式

    vue-router子路由的實(shí)現(xiàn)方式

    這篇文章主要介紹了vue-router子路由的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Vue3.0插件執(zhí)行原理與實(shí)戰(zhàn)

    Vue3.0插件執(zhí)行原理與實(shí)戰(zhàn)

    這篇文章主要介紹了Vue3.0插件執(zhí)行原理與實(shí)戰(zhàn),Vue項目能夠使用很多插件來豐富自己的功能Vue-Router、Vuex等,節(jié)省了我們大量的人力和物力,下面我們就一起來了解Vue3.0插件的原理吧,需要的小伙伴可以參考一下
    2022-02-02
  • vue下跨域設(shè)置的相關(guān)介紹

    vue下跨域設(shè)置的相關(guān)介紹

    本篇文章主要介紹了vue下跨域設(shè)置的相關(guān)介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Vue中引入bootstrap.min.css的正確姿勢分享

    Vue中引入bootstrap.min.css的正確姿勢分享

    這篇文章主要介紹了Vue中引入bootstrap.min.css的正確姿勢,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 精讀《Vue3.0 Function API》

    精讀《Vue3.0 Function API》

    這篇文章主要介紹了精讀《Vue3.0 Function API》,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Vue+webpack項目基礎(chǔ)配置教程

    Vue+webpack項目基礎(chǔ)配置教程

    這篇文章主要介紹了Vue+webpack項目基礎(chǔ)配置教程,需要的朋友可以參考下
    2018-02-02
  • vue實(shí)現(xiàn)簡單的日歷效果

    vue實(shí)現(xiàn)簡單的日歷效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)簡單的日歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評論

天镇县| 平远县| 自治县| 榕江县| 北宁市| 郑州市| 屏南县| 崇阳县| 宜黄县| 阜城县| 兰西县| 北宁市| 宜兰市| 屏东县| 琼结县| 华池县| 东乡县| 甘南县| 左云县| 邵阳县| 浮山县| 哈密市| 安岳县| 抚顺市| 西林县| 新沂市| 兴文县| 满洲里市| 孟村| 稻城县| 固阳县| 潼南县| 托里县| 上栗县| 普宁市| 西乌| 闵行区| 凤山县| 乐都县| 平湖市| 昭平县|