【Electron】electron-vue 借助 element-ui UI 库助力桌面应用开发
前面文章我们讲过 electron 让可以用 HTML、JS、CSS 开发桌面应用程序。而 electron-vue 是一个结合了 electron 与 vue 的套件。这样我们就能方便地使用 vue 快速开发桌面应用。但是,vue 只是在 js 这层面做了大量的便捷的操作。对 UI 并未过多涉及。此时如果您在开发过程中自己实现一套统一主题的 UI 视觉效果,借助成熟的 element-ui 或 bootstrap 肯定是最好的。
本文将介绍怎么让 electron-vue 与 element-ui 结合更加快捷开发我们的桌面应用程序。
一、安装 element-ui
这个安装非常简单。
如下命令:
> npm i element-ui -S
记住这个命令是在 electron-vue 创建的项目根目录安装噢~
二、使用 element-ui
安装成功之后,我们现在就把它用到我们的 electron-vue 项目中。
1)main.js 文件加载 element-ui
打开 src/renderer/man.js
加载 element-ui
......
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
......
main.js
加载之后的完整代码示例:
import Vue from 'vue'
import axios from 'axios'import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'import App from './App'
import router from './router'
import store from './store'Vue.use(ElementUI)if (!process.env.IS_WEB) Vue.use(require('vue-electron'))
Vue.http = Vue.prototype.$http = axios
Vue.config.productionTip = false/* eslint-disable no-new */
new Vue({components: { App },router,store,template: '<App/>'
}).$mount('#app')
在 main.js 加载 element-ui 之后,您可以在任何 .vue 文件中直接使用 element-ui 提供的组件。
2)使用 element-ui 组件
为了能快速验证您安装的 element-ui
是否生效。我们可以用 src/renderer/App.vue
来进行演示。
打开 App.vue
加入以下代码:
<el-row><el-button>默认按钮</el-button><el-button type="primary">主要按钮</el-button><el-button type="success">成功按钮</el-button><el-button type="info">信息按钮</el-button><el-button type="warning">警告按钮</el-button><el-button type="danger">危险按钮</el-button>
</el-row>
注:此代码就定要加在
<template>...</template>
里面。
此时我们可以通过yarn run dev
或 npm run dev
查看效果。此时会看到显示一组按钮。
三、编译安装包
我们通过 yarn run dev
这种形式开发能正常显示结果。但是它存在一个问题:通过 electron-package
或 electron-builder
编译成安装包的时候会导致界面空白一片。
终于原因是 electron-vue
默认的组件里面只有 vue
才在编译白名单内。如果使用了第三方的的类库,一定要加到白名单。
修改:./.electron-vue/webpack.renderer.config
脚本。脚本如下代码:
let whiteListedModules = ['vue']
更改为:
let whiteListedModules = ['vue', 'element-ui']
如果以后加载了其他的跟页面渲染相关的类库,都要在这里添加到白名单。否则,通过 yarn run build
或 npm run build
生成的安装包都将无法正常渲染界面出现空白的情况。
四、示例欣赏
以下示例就是我自己开发的一小玩意残次器。
它包含:
- electron-vue
- element-ui UI 库
- electron-package 打包
- 自定义系统托盘图标以及托盘图标右键菜单
- 自定义系统标题栏(最小化/最大化/关闭)
注:在修改
src/main/index.js
的时候一定要注意开发环境与编译环境的处理。比如,我的处理方式如下:
if (process.env.NODE_ENV !== 'development') {// 系统托盘右键菜单var trayMenuTemplate = [{label: '设置',click: function () {} //打开相应页面},{label: '意见反馈',click: function () {}},{label: '帮助',click: function () {}},{label: '关于我们',click: function () {}},{label: '退出',click: function () {app.quit();}}];trayIcon = path.join(__dirname, 'static/app.ico');appTray = new Tray(trayIcon);// 图标的上下文菜单const contextMenu = Menu.buildFromTemplate(trayMenuTemplate);// 设置此托盘图标的悬停提示内容appTray.setToolTip("It助手\n您的开发小帮手");// 设置此图标的右键菜单appTray.setContextMenu(contextMenu);}
关键代码:
if (process.env.NODE_ENV !== 'development') {
// code ...
}
通过 yarn run dev
的时候就是开发环境。通过 yarn run build
的时候就是编译环境。上面就是判断当前环境不是开发环境的时候生效。因为,在开发环境有很多如果底层支持的功能(系统托盘图标)是无法在开发环境使用的。所以,我们要做环境区分。


喜欢的朋友记得点赞、收藏、关注哦!!!
相关文章:

【Electron】electron-vue 借助 element-ui UI 库助力桌面应用开发
前面文章我们讲过 electron 让可以用 HTML、JS、CSS 开发桌面应用程序。而 electron-vue 是一个结合了 electron 与 vue 的套件。这样我们就能方便地使用 vue 快速开发桌面应用。但是,vue 只是在 js 这层面做了大量的便捷的操作。对 UI 并未过多涉及。此时如果您在开…...

Linux基础(最常用基本命令)
1.查看文件ls 1.1 格式 ls 选项 参数,如:ls -lah ~/ 1.2 选项设置: -l:list 以列表方式显示文件 -h:human-readable 以人类可读的方式显示文件大小(会将纯数字转换为kb,mb) -a:all 显示所有的…...

含铜废水循环利用体系
在工业绿色转型浪潮中,含铜废水回收技术正以"资源再生智能管控"的双核驱动模式,重构传统水处理产业的价值链。该体系通过构建"精准分离-梯级利用-智慧运维"的闭环系统,不仅突破了重金属废水处理的技术桎梏,更…...
移动端返回指定页面
onLoad(() > { // #ifdef APP-PLUS || MP-ALIPAY || H5 onBackPress(() > { uni.switchTab({ url: ‘/pages/my/my’, }) return true }) // #endif }) onUnload(() > { // #ifdef MP-WEIXIN uni.switchTab({ url: ‘/pages/my/my’, }) // #endif })...

MySQL 安装配置(完整教程)
文章目录 一、MySQL 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1 初始化 MySQL5.2 搭建 MySQL 环境 六、修改 MySQL 密码七、卸载 MySQL八、结语 一、MySQL 简介 MySQL 是一款广泛使用的开源关系型数据库管理系统(RDBMS)&#…...

【JavaScript】二十九、垃圾回收 + 闭包 + 变量提升
文章目录 1、作用域1.1 局部作用域1.2 全局作用域1.3 作用域链 2、JC垃圾回收机制♻️3、GC算法3.1 引用计数法3.2 标记清除法 4、闭包4.1 定义4.2 闭包的应用:实现数据的私有 5、变量提升 1、作用域 即一个范围,离开了这个范围,这个变量就不…...

【从零开始学习RabbitMQ | 第一篇】从异步通信到交换机
目录 前言 1.什么是RabbitMQ? 2.同步调用的优缺点 3.异步调用的优缺点 3.1优点: 3.2异步调用的问题是什么? 4技术选型 4.1AMQP协议就是: 4.2kafka和RabbitMQ的使用场景 5.安装RabitMq 6.rabitmq的整体架构 7.RabibtM…...
100个常用的DeepSeek指令
日常生活类(20个) 1. 新闻解读:请为我解读今天的热点新闻。 2. 天气查询:请查询……的天气并推荐着装。 3. 旅行攻略:请制定前往……的旅行攻略。 4. 菜谱生成:请生成……菜的具体做法。 5. 解决方案&…...

AI(学习笔记第二课) 使用langchain进行AI开发
文章目录 AI(学习笔记第二课) 使用langchain进行AI开发学习内容:1. 使用背景2.创建python(pycharm community版)开发环境并连接deepseek2.1 创建python(pycharm community版)开发环境2.2 创建python工程2.3 写入初始py…...

基于Jenkins的DevOps工程实践之Jenkins共享库
文章目录 前言Jenkins共享库结构1、共享库演示2、知识点补充3、实践使用共享库格式化输出日志4、groovy基础语法4.1、 什么是 Groovy?4.2、groovy特点4.3、运行方法4.4、标识符4.5、基本数据类型4.5.1、string类型4.5.2、list类型 4.6、函数使用4.7、正则表达式 5、…...

使用Qt自带的Qt assistant时如何添加需要查看的文档
当我们双击打开Qt Assistant时 左边目录栏只有自带的帮助文档,所以需要添加要查看的文档 点击左上角Edit中的Preferences,点击add 找到qdoc文件夹 全选里面的内容 点击Apply 点击ok 左边的目录栏就出现所有这个版本的Qt有关的文档啦...

基于网络爬虫+Spark+Hadoop等大数据和SpringBoot技术实现的的汽车行业大数据分析与可视化平台系统(源码+论文+PPT+部署文档教程等)
博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围…...

日本IT|AI应用工程师主要工作内容以及职业前景解析
1. 主要工作内容 AI应用工程师是: 类别具体工作内容常见工具需求分析和业务部门沟通,明确「用AI解决什么问题」PowerPoint, Excel, Miro模型选型与微调用现成AI(如BERT、YOLOv8、Stable Diffusion等)做Fine-TuningPython (PyTor…...

Soft Mask(软遮罩)技术
一、概述 Soft Mask是一种技术或工具,主要用于实现平滑的边缘遮罩效果。它在不同的应用领域有不同的实现和定义 1.在Unity UI设计中 SoftMask是一款专为Unity设计的高级遮罩工具,它突破了传统Mask的限制,提供了更为灵活和细腻的UI遮罩解决方案…...

ESP32开发之freeRTOS的互斥量
什么是互斥量互斥量的应用场合互斥量的API函数基本代码结构互斥量使用举例递归锁递归锁举例总结什么是互斥量 在freeRTOS中,多个任务访问一块共享资源,会产生竞争现象。 比如马路上只有一个很早以前的电话亭,A、B都想要打电话,然后他们就开始打架了。但是如果A先进去了然…...

K8s 资源分类
K8s 资源分类图谱 内置资源的分类 1、工作负载相关: Pod:最小的部署单元,包含一个或多个容器。 Deployment:管理无状态应用的副本和滚动更新。 StatefulSet:适用于有状态应用(如数据库)&#…...
Python连接云端服务器:基于Paramiko库的实践与问题剖析
引言 在软件开发与运维场景中,借助Python连接云端服务器进行操作极为常见。Paramiko库作为实现SSHv2协议的有力工具,为Python与云端服务器的交互搭建了桥梁。本文将深入介绍使用Paramiko连接云端Linux服务器的方法,并剖析过程中可能遭遇的问…...

基于 Flask的深度学习模型部署服务端详解
基于 Flask 的深度学习模型部署服务端详解 在深度学习领域,训练出一个高精度的模型只是第一步,将其部署到生产环境中,为实际业务提供服务才是最终目标。本文将详细解析一个基于 Flask 和 PyTorch 的深度学习模型部署服务端代码,帮…...
洛谷 P1850 [NOIP 2016 提高组] 换教室
题目传送门 前言 终于自己想出概率期望 d p dp dp 的状态了,但是依旧没能相对转移方程。(招笑) 暴力 这题部分分和特殊情况分给的挺多的,所以先拿部分分。 一、思路 先跑一边 F l o y d Floyd Floyd 最短路求出两点间最短距…...
C#生成二维码和条形码
C# 实现二维码和条形码生成:从入门到实战 文章目录 C# 实现二维码和条形码生成:从入门到实战一、引言二、准备工作2.1 开发环境搭建2.2 引入相关库 三、生成条形码3.1 条形码基本概念3.2 使用[ZXing.Net](https://ZXing.Net)生成条形码3.2.1 核心代码实现…...

【金仓数据库征文】金仓数据库 KES:MySQL 迁移实用指南
我们都知道,现在企业数字化转型那可是势在必行,数据库迁移这事儿就变得特别关键。金仓数据库的 KingbaseES(简称 KES),就给咱从 MySQL 往 KES 迁移数据库提供了一套超好用的方案。下面咱就讲下 咋用金仓数据库来完成这…...

多态(c++详细版)
一.多态 1.1 多态的概念 多态(polymorphism)的概念:通俗来说,就是多种形态。多态分为编译时多态(静态多态)和运⾏时多态(动态多态),这⾥我们重点讲运⾏时多态,编译时多态(静态多态)和运⾏时多态(动态多态)。编译时多态(静态多态)主…...
内存泄漏系列专题分析之八:高通相机CamX内存泄漏内存占用分析--通用ION(dmabuf)内存拆解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:内存泄漏系列专题分析之七:高通相机CamX--Android通用ION(dmabuf)内存分配和释放原理 这一篇我们开始讲: 内存泄漏系列专题分析之八:高通相机CamX内存泄漏&内存占用分析--通用ION(dmabuf)内…...
后端项目进度汇报
项目概述 本项目致力于构建一个先进的智能任务自动化平台。其核心技术是一套由大型语言模型(LLM)驱动的后端系统。该系统能够模拟一个多角色协作的团队,通过一系列精心设计或动态生成的处理阶段,来高效完成各种复杂任务ÿ…...

数据结构——二叉树和堆(万字,最详细)
目录 1.树 1.1 树的概念与结构 1.2 树相关的术语 1.3 树的表示法 2.二叉树 2.1 概念与结构 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.3 二叉树存储结构 2.3.1 顺序结构 2.3.2 实现顺序结构二叉树 2.3.2.1 堆的概念与结构 2.3.2. 2 堆的插入与删除数据…...

MATLAB基于格拉姆角场与2DCNN-BiGRU的轴承故障诊断模型
本博客来源于CSDN机器鱼,未同意任何人转载。 更多内容,欢迎点击本专栏目录,查看更多内容。 目录 0 引言 1 格拉姆角场原理 2 2DCNN-BiGRU网络结构 3 应用实例 3.1 数据准备 3.2 格拉姆角场数据提取 3.3 网络模型搭建-重中之重 3.4 …...

正点原子IMX6U开发板移植Qt时出现乱码
移植Qt时出现乱码 1、前言2、问题3、总结 1、前言 记录一下正点原子IMX6U开发板移植Qt时出现乱码的解决方法,方便自己日后回顾,也可以给有需要的人提供帮助。 2、问题 用正点原子IMX6U开发板移植Qt时移植Qt后,sd卡里已经存储了Qt的各种库&…...

JVM局部变量表和操作数栈的内存布局
局部变量表和操作数栈 首先看一段Java源码 public class Add_Sample{public int add(int i, int j){int k 100;int result i j k;return result;}public static void main(String[] args){int result new Add_Sample().add(10,20);System.out.println(result);} }使用ja…...

Mockoon 使用教程
文章目录 一、简介二、模拟接口1、Get2、Post 一、简介 1、Mockoon 可以快速模拟API,无需远程部署,无需帐户,免费,跨平台且开源,适合离线环境。 2、支持get、post、put、delete等所有格式。 二、模拟接口 1、Get 左…...

使用 IDEA + Maven 搭建传统 Spring MVC 项目的详细步骤(非Spring Boot)
搭建Spring MVC项目 第一步:创建Maven项目第二步:配置pom.xml第三步:配置web.xml第四步:创建Spring配置文件第五步:创建控制器第六步:创建JSP视图第七步:配置Tomcat并运行目录结构常见问题解决与…...