electron+vue3全家桶+vite项目搭建【18】electron新建窗口时传递参数【url版】

news2024/11/24 9:43:53

文章目录

    • 引入
    • 实现效果展示
    • 实现思路
    • 实现步骤
      • 1.调整主进程新建窗口的handle
      • 2.调整新建窗口函数
      • 3.封装url获取请求参数的工具
    • 测试代码

引入

electron+vue的项目中,我们通过传入页面路由来展开新的页面,就像vue-router的路由传参一样,我们可以利用url进行参数传递 【不直接使用路由传参,是因为后续封装窗口工具类时,我们控制同一路由只对应一个窗口】

demo项目地址

实现效果展示

如下图所示,我们在新建窗口时传入消息参数,“想你问个好”,helloWorld页在页面挂载时从url中取到传递的参数
请添加图片描述

实现思路

这里使用比较取巧的方法,直接把整个参数对象序列化后补充到路由的?后面,并且使用固定的参数名称,然后新页面挂载的时候从url中截取对应的参数,然后反序列化对象来获取初始值【ps:url的长度受限于浏览器的限制,建议数据量较少的时候使用这种方式】

实现步骤

1.调整主进程新建窗口的handle

我们之前实现了一个极简的新建窗口代码,现在我们补充接收一个json参数串:

electron\main\index.ts

/**
 * 新建一个窗口
 * route=>路由地址  paramJsonStr => 序列化后的参数对象
 */
ipcMain.handle("open-win", (_, route: string, paramJsonStr: string) => {
  const childWindow = new BrowserWindow({
    webPreferences: {
      preload,
      nodeIntegration: true,
      contextIsolation: false,
    },
  });
  const paramData = paramJsonStr ? "?urlParamData=" + paramJsonStr : "";
  if (process.env.VITE_DEV_SERVER_URL) {
    childWindow.loadURL(`${url}#${route}${paramData}`);
  } else {
    childWindow.loadFile(indexHtml, { hash: route + paramData });
  }
});

2.调整新建窗口函数

同样的,我们也需要修改electronUtils中的新建窗口方法:

src\utils\electronUtils.ts

/**
 * 新建一个窗口
 * @param path 路由地址
 */
export function openWindow(path: string, param: Object) {
  let paramJsonStr = undefined;
  if (param) {
    paramJsonStr = JSON.stringify(param);
  }
  ipcRenderer.invoke("open-win", path, paramJsonStr);
}

3.封装url获取请求参数的工具

我们在utils目录下新建一个myUtils工具类:

  • 补充一个通过url获取参数对象的工具

src\utils\myUtils.ts

/**
 * 新建一个窗口
 * @param path 路由地址
 * @param param 传递的参数
 */
export function openWindow(path: string, param?: Object) {
  let paramJsonStr = undefined;
  if (param) {
    paramJsonStr = JSON.stringify(param);
  }
  ipcRenderer.invoke("open-win", path, paramJsonStr);
}

测试代码

1.我们调整测试代码,在新建窗口时传递参数对象:

src\components\demo\Index.vue

function openWindow() {
  electronUtils.openWindow(windowPath.value, {
    message: "向你问个好~~",
  });
}

2.在HelloWorld.vue文件中,页面完成挂载时弹出获取的参数:

src\components\HelloWorld.vue

import { onMounted, ref } from "vue";
import { ElMessage } from "element-plus";

onMounted(() => {
  const paramData = myUtils.getParamFromUrl();
  if (paramData) {
    ElMessage.success(paramData.message);
  }
});

测试效果如下:

  • 当我们新建hello页面窗口时,能正常的从url中取到我们传入的参数信息

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/490780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

排序算法 — 桶排序

文章目录 桶排序介绍桶排序实现桶排序复杂度和稳定性桶排序复杂度桶排序稳定性 代码实现核心&总结 桶排序介绍 假设待排序的数组a中共有N个整数,并且已知数组a中数据的范围[0, MAX)。在桶排序时,创建容量为MAX的桶数组r,并将桶数组元素都…

【AUTOSAR】【通信安全】E2E

目录 一、概述 二、约束和假设 三、依赖模块 四、功能描述 4.1 开发错误 4.1.1 运行时错误 五、API接口 5.1 E2E Profile 接口 5.2 E2E其他接口 一、概述 该文档制定了PRS E2E协议的平台特定实现要求。这包括所使用的接口和数据类型。 E2E保护的概念假设在运行时应对…

探讨Redis缓存问题及解决方案:缓存穿透、缓存击穿、缓存雪崩与缓存预热(如何解决Redis缓存中的常见问题并提高应用性能)

Redis是一种非常流行的开源缓存系统,用于缓存数据以提高应用程序性能。但是,如果我们不注意一些缓存问题,Redis也可能会导致一些性能问题。在本文中,我们将探讨Redis中的一些常见缓存问题,并提供解决方案。 一、缓存穿…

云计算中的边缘计算技术及其应用

章节一:云计算和边缘计算的简介 随着互联网的发展,数据中心的规模不断扩大,云计算也成为了越来越受欢迎的计算模式。但是,云计算存在着一些问题,比如延迟较高,网络瓶颈,数据隐私和安全性等等。…

Canny边缘检测算法

文章目录 前言1、Canny边缘检测算法2、代码1函数 3、代码24、基于tensor数据的代码 前言 最近在向卷积神经网络里的数据预处理和数据增强部分加这个函数,记录一下。 1、Canny边缘检测算法 Canny边缘检测算法是一种经典的边缘检测算法,其基本原理如下&a…

榜单!直接式TPMS前装搭载率突破60%,哪些厂商在领跑

2016年,《乘用车轮胎气压监测系统的性能要求和试验方法》通过强制性国家标准技术审查;根据规定,自2020年1月1日起,所有中国市场在产乘用车将开始实施强制安装TPMS(胎压监测系统)的要求。 目前,…

vue项目前端解决跨域问题

在前后端分离项目中,跨域是一定会出现的问题,本文主要介绍跨域问题的解决思路,以及在vue项目中如何使用代理的方式在前端解决跨域问题,同时提供一个后段解决的方案。 1、产生原因 跨域问题产生的原因是浏览器的同源策略。浏览器同…

哪款蓝牙耳机便宜又好用?2023公认质量最好的蓝牙耳机推荐

哪款蓝牙耳机便宜又好用?现如今,市面上的蓝牙耳机越来越多,在选择增多的同时也有着不小的困惑,不知道哪款好用。针对这个问题,我来给大家推荐几款质量最好的蓝牙耳机,一起来看看吧。 一、南卡小音舱Lite2蓝…

安装kali虚拟机

1:kali是什么? kali 是由 Offensive Security 公司开发和维护的。它在安全领域是一家知名的、值得信赖的公司它甚至还有一些受人尊敬的认证,来对安全从业人员做资格认证。Kali 也是一个简便的安全解决方案。Kali 并不要求你自己去维护一个 Linux 系统&…

u盘中病毒文件被隐藏怎么恢复?看看这三种方法

U盘是我们日常生活中常用的存储设备,但是如果U盘被病毒感染,可能会导致文件被隐藏或丢失。被病毒隐藏的U盘文件给我们的生活、工作带来了很大的麻烦,因此必须马上采取行动来恢复这些文件。 而解决“u盘文件被病毒隐藏如何恢复正常”的问题原来…

SpringBoot【运维实用篇】---- 日志

SpringBoot【运维实用篇】---- 日志 1. 代码中使用日志工具记录日志教你一招:优化日志对象创建代码 2. 日志输出格式控制3. 日志文件 运维篇最后一部分我们来聊聊日志,日志大家不陌生,简单介绍一下。日志其实就是记录程序日常运行的信息&…

网络安全是一个好的专业吗?

近年我国《网络安全法》政策持续落地,前段时间国家工信部出台意见,加强数据安全、网络安全、功能安全等管理、智能网联汽车安全是关键。针对上次滴滴安全安全审查一事当中,国家网信办强调企业无论在哪上市必须确保国家网络安全安全及关键信息…

UFC718AE01 HIEE300936R0101什么是 ABB 分布式控制系统?

​ UFC718AE01 HIEE300936R0101什么是 ABB 分布式控制系统? 关于 ABB 类别 什么是 ABB 分布式控制系统? ABB 的分布式控制系统 (DCS) 旨在改变多方面、全天候 24 小时的工业流程。ABB 的控制架构持续分析和推动工厂生产力,最大限度地提高资产…

Mysql数据库的存储引擎——必看教程

目录 一、什么是存储引擎 二、MySQL支持的存储引擎 三、常见的存储引擎 1.InnoDB存储引擎 2.MyISAM存储引擎 3.MEMORY存储引擎 四、选择存储引擎 总结 ✨✨✨大家好,我是会飞的鱼-blog,今天我来给大家介绍一下Mysql,有不足之处&#xf…

从 Windows 10/11、7/8 上清空回收站后恢复已删除文件的 6 种方法

Windows(包括 Windows 11、10、8、7 和 Vista)上的回收站用于回收您打算删除的不需要的文件。如果您删除了一些重要的文件或文件夹并且不小心清空了回收站,您仍然有机会恢复从回收站中删除的文件。这是一个教程,将阐明“如何在清空…

机器学习 day11(决策边界,损失函数)

逻辑回归模型的预测过程 通常来说,我们先选择一个阈值0.5,当f(x) > 0.5时,则预测y为1,当f(x)<0.5时,则预测y为0。由此我们可以得出,当阈值取0.5时,g(z)取0.5,z取0。…

想回西安

五一假期结束了,开始营业总结下跟读者们的交流。 特别感谢大家让我在自己的技术号里面写一些和生活相关的事情,现在正常营业,回复下读者的问题。 问题 发哥,我现在有个疑惑能麻烦帮我解答下嘛。 我已经工作一年多了,但…

这就是实力~ 腾讯云大咖亲码 “redis深度笔记” 无废话全精华

前言 作为这个时代码代码的秃头人员,对Redis肯定是不陌生的,如果连Redis都没用过,还真不好意思出去面试,指不定被面试官吊打多少次。 毕竟现在互联网公司和一些创业公司都要用到Redis,像亚马逊、谷歌、阿里、腾讯都要…

网络安全 | Linux ELF病毒实例

本节将编写一个病毒原型,本病毒原型主要由C语言编写,少部分无法由C语言来完成的底层操作采取GCC内嵌汇编的方式实现。 01、原型病毒实现 现在开始介绍实现的细节,提供原型病毒的伪代码以及流程图,并介绍编译感染过程。以实践的方式…

软件开发全文档下载(史上最详细版)

写在前面 在日常项目开发过程中,会产生大量的过程文档,比如开发过程中的文档、管理过程中的文档、产品相关文档等等,那这些文档我们日常怎么去管理呢?怎么去做规划呢?如何做成通用标准呢?小编特地整理了一…