首页 > 其他分享 >修复微前端无界[wujie]子应用window属性值在初始化后不再变化的问题

修复微前端无界[wujie]子应用window属性值在初始化后不再变化的问题

时间:2023-12-19 11:26:49浏览次数:45  
标签:初始化 appWindow innerHeight innerWidth prop window wujie 属性

问题

部分的组件库(例如antd)使用到了window.innerWidthwindow.innerHeight属性,可无界框架在初始化时仅将主应用的innerWidthinnerHeight属性赋值给子应用,导致后续不管主应用如何变化,子应用的这两个属性无法跟随变化,也就导致子应用使用的这些组件库表现异常。
image

解决方式

借用作者在交流群中的说明,使用Object.defineProperty重写对应属性的getter即可image

  • 故在此借助无界的插件系统,可以按照下面的方式进行属性指向修正。
  • 不只是innerWidth和innerHeight,其他属性也可以这样处理。
<script setup>
import WujieVue from "wujie-vue3";
const plugins = [
  {
    // 在子应用所有的js之前
    jsBeforeLoaders: [
      {
        callback(appWindow: typeof window) {
          // 后续若有其他属性需要修正,只需在这里添加需要重写的属性即可
          const propsNeedAdjust = ["innerWidth", "innerHeight"];
          const adjustPropsProxy = (prop: string) => {
            Object.defineProperty(appWindow, prop, {
              get: function () {
                if (appWindow.__POWERED_BY_WUJIE__) {
                  return appWindow.parent[prop];
                } else {
                  // 返回原始值
                  return appWindow[prop];
                }
              }
            });
          };
          propsNeedAdjust.forEach(prop => {
            adjustPropsProxy(prop);
          });
        }
      }
    ]
  }
];
</script>

<template>
  <WujieVue :plugins="plugins" />
</template>

标签:初始化,appWindow,innerHeight,innerWidth,prop,window,wujie,属性
From: https://www.cnblogs.com/crispyChicken/p/17913252.html

相关文章

  • windows 获取 磁盘 serialnum
     #include<Windows.h>#include<iostream>#include<iomanip>#include<ntddscsi.h>intmain(){constwchar_t*drivePath=L"\\\\.\\PhysicalDrive0";//设置为磁盘的路径,根据需要更改HANDLEhDevice=CreateFileW(driv......
  • windows本地部署webUI框架遇到的问题及解决
    最近对stablediffusion比较感兴趣,就想着拿一些模型在本地跑一跑感受一下,也想训练一些自己的模型玩一玩,刚开始参照网上的教程及github上的官方教程一直安装不成功,总是报错:torch安装不成功或其他的一些,本人系统是win10,总结了一些可以尝试的解决方法如下:1.对conda使用不是很熟悉,......
  • 【Windows】微软自带的系统阴影副本(VSS)
    学习就是在生活的方方面面!在前两天和我的老哥的一次闲聊中,老哥介绍了Windows系统的NTFS磁盘自带的,类似于快照的系统,VSS于是我就开始了学习! 1.什么是VSSVSS是微软公司的一种技术,全称为VolumeShadowCopyService(卷影复制服务)。VSS是Windows操作系统中的一个功能,用于创建文......
  • Windows11忘记开机密码重置
    在锁屏页面按着shift键重启,找到命令行输入一下两行代码copyc:\windows\system\system32\utilman.exec:\windows\system32\utilman.exebakcopyc:\windows\system32\cmd.exec:\windows\system32\utilman.exe/y然后退出命令行,重启计算机,在输入密码页面右下角有一个轻松使......
  • GPU监控终端部署(windows)
    目的:使用nvidia_gpu_expoter配合prometheus+grafana监控GPU性能环境部署:WindowsPowerShellISE管理员打开#[Net.ServicepointManager]::SecurityProtocol  检查TLS是否支持1.2#如果支持下一步,不支持则输入(#[Net.ServicePointManager]::SecurityProtocol=[Net.Se......
  • window下rabbitmq安装教程
    RabbitMq简介1.1消息队列中间件简介消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性[架构]使用较多的消息队列有ActiveMQ(安全),RabbitMQ,ZeroMQ,Kafka(大数据),MetaMQ,RocketMQ以下介绍消息队列在实际应用中常用的使......
  • 识别指定window窗口的文本
    1.简单需求通过图文识别读取一个指定window窗口的文本。获取窗口句柄,截图保存成bitmap,调用图文识别库.测试结果是对中文下的识别不是特别好。需要注意的是,tessdata要下载指定目录页下。2.引用包a.引用tesseract4.1 b. Emgu.CV组件3.上代码usingSystem;using......
  • 使用微pe装windows系统
      1、工具/原料:U盘(4g以上--因为win10的镜像有4个g以上)、微Pe软件 2、方法/操作首先,使用百度搜索“微Pe工具”下载软件,此软件相对来讲比较小,只有117M,而且操作简单。之后双击软件运行,在”安装至其它介质“后,选择第一个图标--安装PE至U盘。在弹出......
  • windows端口转发
    #显示所有端口转发netshinterfaceportproxyshowall#显示已有端口转发语句netshinterfaceportproxydump#新增远程使用端口转发netshinterfaceportproxyaddv4tov4listenaddress=0.0.0.0listenport=7008connectaddress=远程ipconnectport=3128#新增本机使用端......
  • 戴尔PowerEdge R750 机架式服务器初始安装Windows Server 2019 服务器系统
    2.安装原版WindowsServer2019操作系统安装操作系统时在SSD硬盘上无法安装,错误如下: 1.在BIOS界面下检查物理磁盘是否处于online状态:2.将“FirmwareDeviceOrder”设置为enable,并重启:设置步骤:Vew-MainMenu-ControllerManagement-AdvancedControllerProperties,将......