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

Vue 3+Vite+Eectron从入门到实战系列之(四)一Electron热身运动(二)

在electron里面能不呢实现暗黑模式和明亮模式的切换?我们怎么读取主进程里面的数据和系统数据。这篇就是来实现这几个效果的

实现效果

请添加图片描述

更改系统的主题色

在 App.vue 中添加代码。

<el-button type="warning" @click="changeTheme">更改系统主题颜色</el-button>
const themeMode = ref("light");
const changeTheme = () => {themeMode.value = themeMode.value === "light" ? "dark" : "light";window.electronAPI.changeTheme(themeMode.value);
};

在渲染进程的 preload.js 中添加代码。

之前,我们是在渲染进程中send,现在我们使用invoke,通过invoke来激活一个事件。

changeTheme(data) {ipcRenderer.invoke("change-theme", data);
}

主进程 main.js 中添加代码。

通过ipc.handle来注册一个事件,当主进程接收到渲染进程的消息时,就会触发该事件。

//触发更改主题的事件
ipc.handle("change-theme", (event, data) => {console.log("change theme", data);nativeTheme.themeSource = data;
});

send 和 invoke 的区别,我们在后面再详细分析。

读取渲染进程的自定义数据

在渲染进程的 preload.js 中添加代码。

sysLists: [{name: "系统设置",icon: "el-icon-setting",path: "/system/sysSetting",},{name: "系统日志",icon: "el-icon-document",path: "/system/sysLog",},{name: "系统用户",icon: "el-icon-user",path: "/system/sysUser",},],

展示到我们的页面上

<ul><li v-for="item in sysLists" :key="item.id">{{ item.name }}</li>
</ul>
const sysLists = computed(() => {return window.electronAPI.sysLists;
});

在这里插入图片描述

读取渲染进程中的系统信息

在渲染进程的 preload.js 中添加代码。

getSystemVersion: () => process.getSystemVersion(),

展示到我们的页面上

<h3>系统版本:{{ sysInfo }}</h3>
const sysInfo = computed(() => {return window.electronAPI.getSystemVersion();
});

在这里插入图片描述
这样,我们就实现了这几个效果。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • mmsegmentation 自定义模型报错:KeyError: ‘EncoderDecoder is not in the model registry
  • 【HBZ分享】bean的生命周期 以及 各个阶段在spring的哪个类被调用
  • Leetcode75-8 递增的三元子序列
  • 在Windows MFC\C++编程中,如何使用OnCopyData函数
  • React 条件判断
  • MySql审计平台
  • MacOS Anaconda 安装教程及虚拟环境创建
  • 吴恩达:如何系统学习机器学习?
  • Java开发工具IDEA
  • 宿主机与容器(docker)之间的数据共享
  • celery使用
  • HDFS 之 文件流
  • proteus仿真c51单片机(四)双机串口通信(电路设计及代码)
  • 八 信息系统基础知识(考点篇)试题
  • Obsidian插件安装与开发
  • 时间复杂度分析经典问题——最大子序列和
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 2017前端实习生面试总结
  • centos安装java运行环境jdk+tomcat
  • hadoop集群管理系统搭建规划说明
  • Javascript弹出层-初探
  • Redis中的lru算法实现
  • Vim Clutch | 面向脚踏板编程……
  • Vue 2.3、2.4 知识点小结
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 将 Measurements 和 Units 应用到物理学
  • 聊聊redis的数据结构的应用
  • 前端临床手札——文件上传
  • 入手阿里云新服务器的部署NODE
  • 使用 QuickBI 搭建酷炫可视化分析
  • 使用docker-compose进行多节点部署
  • 提醒我喝水chrome插件开发指南
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • # centos7下FFmpeg环境部署记录
  • #if和#ifdef区别
  • #每日一题合集#牛客JZ23-JZ33
  • (2.2w字)前端单元测试之Jest详解篇
  • (21)起落架/可伸缩相机支架
  • (zt)最盛行的警世狂言(爆笑)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (全注解开发)学习Spring-MVC的第三天
  • (推荐)叮当——中文语音对话机器人
  • (一)kafka实战——kafka源码编译启动
  • (一)UDP基本编程步骤
  • (一)基于IDEA的JAVA基础10
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转) Face-Resources
  • (转)EXC_BREAKPOINT僵尸错误
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET面试题(二)