当前位置: 首页 > news >正文

Vue3 对于内嵌Iframe组件进行缓存

1:应用场景

对于系统内所有内嵌iframe 的页面均通过同一个路由'/iframe', 在router.query内传入不同src 参数,在同一组件内显示iframe 内嵌页面,对这些页面分别进行缓存。主要是通过v-show 控制显示隐藏从而达到iframe 缓存逻辑

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

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

 3:修改home.vue 文件

3.1 增加变量判断是否先死iframe 组件

// 根据路由判断是否显示Iframe 组件
    const iframeShow = computed(() => route.value?.path.indexOf('/iframe') === 0);

 3.2 在state 中添加响应式数据 wrapperMap, iframeComList

const state = reactive({
      // 保存相同iframe 组件修改之后的组件名称同iframe套壳组件的映射关系
      wrapperMap: new Map(),
      // wrapperMap 转换成的数组,循环遍历生成iframe组件
      iframeComList: [] as any,
    });

3.3  对同一iframe 路由传入不同参数的组件套壳修改name 进行缓存

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 监听路由

/**
     * 监听路由生成新的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,
      },
    );

相关文章:

Vue3 对于内嵌Iframe组件进行缓存

1&#xff1a;应用场景 对于系统内所有内嵌iframe 的页面均通过同一个路由/iframe, 在router.query内传入不同src 参数&#xff0c;在同一组件内显示iframe 内嵌页面&#xff0c;对这些页面分别进行缓存。主要是通过v-show 控制显示隐藏从而达到iframe 缓存逻辑 2&#xff1a…...

L04_MySQL知识图谱

这些知识点你都掌握了吗&#xff1f;大家可以对着问题看下自己掌握程度如何&#xff1f;对于没掌握的知识点&#xff0c;大家自行网上搜索&#xff0c;都会有对应答案&#xff0c;本文不做知识点详细说明&#xff0c;只做简要文字或图示引导。 1 基础 1.1内部组件结构 1.2 数据…...

什么是CNN,它和传统机器学习有什么区别

CNN&#xff0c;全称为卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;&#xff0c;是一种专门用于处理具有网格结构数据&#xff08;如图像、视频&#xff09;的深度学习模型。它由多个卷积层、池化层、全连接层等组成&#xff0c;通过卷积运算和池化操作…...

游戏开发面试题3

unity如何判断子弹射击到敌人&#xff0c;如果子弹特别快怎么办 使用物理学碰撞检测。使用Unity的物理组件&#xff0c;如Rigidbody和Collider&#xff0c;将子弹和敌人都设置为有一定的物理碰撞属性&#xff0c;当子弹碰到敌人的时候&#xff0c;就会触发OnCollisionEnter()事…...

postman请求访问:认证失败,无法访问系统资源

1、使用postman时&#xff0c;没有传入相应的token&#xff0c;就会出现这种情况&#xff0c;此时需要把token放进去 发现问题: { "msg": "请求访问&#xff1a;/getInfo&#xff0c;认证失败&#xff0c;无法访问系统资源", "code": 401 } 1…...

Apache Seata新特性支持 -- undo_log压缩

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Apache Seata新特性支持 – undo_log压缩 Seata新特性支持 – undo_log压缩 现状 & 痛点…...

Java中的软件架构重构与升级策略

Java中的软件架构重构与升级策略 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 重构与升级的背景和意义 软件架构在应用开发中起着至关重要的作用。随着技术…...

设置Docker中时区不生效的问题

项目中使用docker-compose&#xff0c;并通过以下方式设置了时区 environment:- SET_CONTAINER_TIMEZONEtrue- CONTAINER_TIMEZONEAsia/Shanghai 但是并没有正确生效&#xff0c;网上有很多博客都在推荐这个做法&#xff0c;另外一种是使用标准环境标量 -TZAsia/Shangehai …...

LeetCode436:寻找右区间

题目链接&#xff1a;436. 寻找右区间 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> findRightInterval(vector<vector<int>>& intervals) {vector<pair<int, int>> startIntervals;int n intervals.size…...

前端JS特效第22集:html5音乐旋律自定义交互特效

html5音乐旋律自定义交互特效&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; <!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>ChimeTime™</title…...

pyrender 离线渲染包安装教程

pyrender 离线渲染包安装教程 安装 安装 官方安装教程:https://pyrender.readthedocs.io/en/latest/install/index.html#installmesa 首先 pip install pyrenderclang6.0安装 下载地址:https://releases.llvm.org/download.html#6.0.0 注意下好是叫&#xff1a;clangllvm-6…...

XSS平台的搭建

第一步&#xff1a;安装MySQL 数据库 因为xss平台涉及到使用mysql 数据库&#xff0c;在安装之前&#xff0c;先使用docker 安装mysql 数据库。 docker run --name mysqlserver -e MYSQL_ROOT_PASSWORD123 -d -i -p 3309:3306 mysql:5.6 第二步&#xff1a;安装xssplatform…...

【持续集成_03课_Jenkins生成Allure报告及Sonar静态扫描】

1、 一、构建之后的配置 1、安装allure插件 安装好之后&#xff0c;可以在这里搜到已经安装的 2、配置allure的allure-commandline 正常配置&#xff0c;是要么在工具里配置&#xff0c;要么在系统里配置 allure-commandline是在工具里进行配置 两种方式进行配置 1&#xff…...

PageHelper分页查询遇到的小问题

如果我们是这样子直接查询 pagehelper会拼接导我们的sql语句之后 这样子我们搜索出来的list&#xff0c;就是里面参杂了PageHelper的东西 所以我们可以直接转成我们的Page类型 但是如果我们搜索出来的是List<Blog>&#xff0c;我有些信息不想返回给前端&#xff0c;所以…...

【Python】组合数据类型:序列,列表,元组,字典,集合

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️Python】 文章目录 前言组合数据类型序列类型序列常见的操作符列表列表操作len()append()insert()remove()index()sort()reverse()count() 元组三种序列类型的区别 集合类型四种操作符集合setfrozens…...

algorithm算法库学习之——不修改序列的操作

algorithm此头文件是算法库的一部分。本篇介绍不修改序列的操作函数。 不修改序列的操作 all_ofany_ofnone_of (C11)(C11)(C11) 检查谓词是否对范围中所有、任一或无元素为 true (函数模板) for_each 应用函数到范围中的元素 (函数模板) for_each_n (C17) 应用一个函数对象到序…...

idea创建的maven项目pom文件引入的坐标报红原因

如下所示 我们在引入某些依赖坐标的时候&#xff0c;即使点击了右上角的mavne刷新之后还是报红。 其实这是正常现象&#xff0c;实际上是我们的本地仓库当中没有这些依赖坐标&#xff0c;而idea就会通过报红来标记这些依赖来说明在我们的本地仓库是不存在的。 那有的同学就会…...

Python面试题:Python 中的生成器(generator)是什么?有什么优点?

在Python中&#xff0c;生成器&#xff08;generator&#xff09;是一种特殊的迭代器&#xff0c;使用yield关键字生成值&#xff0c;可以逐个生成序列中的值&#xff0c;而不需要一次性将所有值加载到内存中。生成器函数在定义时使用def关键字&#xff0c;并包含一个或多个yie…...

Go语言--复合类型之map、结构体

map Go 语言中的 map(映射、字典)是一种内置的数据结构&#xff0c;它是一个无序的 key-value 对的集合&#xff0c;比如以身份证号作为唯一键来标识一个人的信息。 格式 map [keyType]valueType 在一个 map 里所有的键都是唯一的&#xff0c;而且必须是支持和!操作符的类型…...

Stable Diffusion图像的脸部细节控制——采样器全解析

文章目录 艺术地掌控人物形象好易智算原因分析为什么在使用Stable Diffusion生成全身图像时&#xff0c;脸部细节往往不够精细&#xff1f; 解决策略 局部重绘采样器总结 艺术地掌控人物形象 在运用Stable Diffusion这一功能强大的AI绘图工具时&#xff0c;我们往往会发现自己…...

3步实现窗口置顶:AlwaysOnTop让重要内容不再“失踪“

3步实现窗口置顶&#xff1a;AlwaysOnTop让重要内容不再"失踪" 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop 在多任务处理时&#xff0c;你是否经常需要在多个窗口间…...

Cosmos-Reason1-7B生产环境:港口吊装作业视频力学合理性审计

Cosmos-Reason1-7B生产环境实战&#xff1a;港口吊装作业视频力学合理性审计 1. 项目背景与价值 港口吊装作业是物流运输的核心环节&#xff0c;但也是一个充满风险的场景。吊臂的每一次起降、货物的每一次摆动&#xff0c;背后都涉及复杂的力学原理。传统的安全审计主要依赖…...

Phi-3-mini-4k-instruct-gguf实战教程:集成到Notion插件实现笔记自动摘要

Phi-3-mini-4k-instruct-gguf实战教程&#xff1a;集成到Notion插件实现笔记自动摘要 1. 项目背景与目标 你是否经常在Notion中积累了大量笔记&#xff0c;却苦于没有时间整理和提炼关键信息&#xff1f;本文将带你一步步将Phi-3-mini-4k-instruct-gguf模型集成到Notion插件中…...

从洗衣机到无人机:SVPWM如何让日常电器中的电机更安静、更省电?

从洗衣机到无人机&#xff1a;SVPWM如何让日常电器中的电机更安静、更省电&#xff1f; 当你享受变频空调带来的舒适温度&#xff0c;或是惊叹于无人机平稳的飞行姿态时&#xff0c;可能不会想到这些体验背后都藏着一个关键技术——空间矢量脉宽调制&#xff08;SVPWM&#xff…...

告别混乱!用Python+shutil一键整理UCF101数据集(附完整代码)

告别混乱&#xff01;用Pythonshutil一键整理UCF101数据集&#xff08;附完整代码&#xff09; 刚接触行为识别的研究者&#xff0c;十有八九会在UCF101这类经典数据集的预处理环节卡壳——下载的压缩包解压后&#xff0c;视频文件散落在101个子目录中&#xff0c;而官方提供的…...

vlan 2

...

内网福音:手把手教你用Docker离线搞定Jitsi-Meet视频会议(附完整镜像包下载)

企业级内网视频会议解决方案&#xff1a;Docker化Jitsi-Meet离线部署全指南 在高度封闭的企业内网环境中部署视频会议系统一直是个技术难题。军工单位、金融机构核心网络、科研实验室等场景对数据安全有着近乎苛刻的要求&#xff0c;传统的SaaS视频会议方案无法满足其网络隔离需…...

comsol实能带建模、与Matlab能带数据后处理 文献复现---“周期嵌套声学黑洞结构的复...

comsol实能带建模、与Matlab能带数据后处理 文献复现---“周期嵌套声学黑洞结构的复能带和凋落波研究”-“二维声学黑洞声子晶体的宽频振动抑制”-“ Broadband vibration mitigation using a two-dimensional acoustic black hole phononic crystal” 包括comsol实能带模型、M…...

OpenClaw+Qwen3-14B私有镜像实战:飞书机器人自动回复配置指南

OpenClawQwen3-14B私有镜像实战&#xff1a;飞书机器人自动回复配置指南 1. 为什么选择这个组合&#xff1f; 上周三凌晨2点&#xff0c;我被飞书消息提示音吵醒——团队新人又在加班调试代码。这已经是本周第三次了。作为技术负责人&#xff0c;我意识到需要一种更智能的解决…...

Linux dd命令的深度解析与应用实践

dd 命令概述命令起源与定位dd 命令最早出现在 UNIX 操作系统中&#xff0c;后被移植到 Linux 平台。它不同于普通的文件复制命令&#xff08;如 cp&#xff09;&#xff0c;dd 以底层块设备的方式操作数据&#xff0c;可以精确控制数据流的每一个细节。这种特性使其成为&#x…...