【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 并未过多涉及。此时如果您在开…...
《信息论与编码课程笔记》——信源编码(1)
目录 一、信源编码基本概念 1. 定义与目的 2. 编码示例 3. 编码分类 4. 唯一可译码的判断标准 5. 编码评价指标 二、香农第一定理(无失真可变长信源编码定理) 1. 核心内容 2. 关键概念与指标 3. 数据压缩的本质 4. 例子与启示 5. 定理的意义…...
2022年8月,韩先超对中移信息进行微服务架构原理(Docker+k8s+DevOps+Go等)培训
2022年8月,韩先超对中移信息进行微服务架构原理(Dockerk8sDevOpsGo等)培训 2022年8月,在企业数字化转型和云原生架构加速演进的背景下, 中移信息技术有限公司特别邀请云原生与DevOps领域专家 韩先超老师,…...
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】8.4 数据故事化呈现(报告结构设计/业务价值提炼)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 8.4 数据故事化呈现:从报告结构到业务价值的深度融合一、数据故事化的核心价值体系(一)报告结构设计的黄金框架1. 业务场景锚定ÿ…...
Docker 核心目录结构
1. Docker 核心目录结构 数据存储目录 默认根目录:/var/lib/docker Docker 所有运行时数据(镜像、容器、卷、网络配置等)的默认存储位置。 bash 复制 下载 # 查看 Docker 数据根目录 docker info | grep "Docker Root Dir" # 输出…...
【工具推荐】Code2Prompt
DeepWiki工具可以帮我们快速理解 GitHub 项目,简直是理解陌生开源项目的利器! 但是,它有个小小的“遗憾”——只能解析在线的 GitHub 项目。 如果是本地项目怎么办,还要特意上传,no,code2prompt 就是一款…...
OpenCV定位地板上的书
任务目标是将下面的图片中的书本找出来: 使用到的技术包括:转灰度图、提取颜色分量、二值化、形态学、轮廓提取等。 我们尝试先把图片转为灰度图,然后二值化,看看效果: 可以看到,二值化后,书的…...
Spring Cloud:概述,服务注册和服务发现,多机部署和负载均衡
什么是微服务 就是将一个大型的应用程序拆分成多而小的独立的服务模块,每个服务模块围绕某个业务功能建立,具有独立的数据库,服务栈,并通过轻量级的通信协议进行交互。 单体架构 就是将所有的业务和功能都打包在一个jar包中&…...
Linux的基础开发工具
目录 前言: 1、包管理器yum 1.1 软件包的依赖 1.2 镜像源 1.3 查找/安装/卸载软件 2、编辑器vim 2.1 命令模式(默认) 2.1.1 撤销与反撤销 2.1.2 光标定位 2.1.3 复制&&剪切(删除)&&粘贴 2.1.4 替换 2.1.5 插入模式 2.1.6 V-Block模式 …...
解锁跨平台开发的新时代——Compose Multiplatform
解锁跨平台开发的新时代——Compose Multiplatform 在当今移动和桌面应用程序开发领域,跨平台解决方案是开发者们梦寐以求的工具。而由JetBrains打造的Compose Multiplatform正是这样一款现代UI框架,它基于Kotlin技术,为开发者构建高性能且美观的用户界面提供了极大的便利和…...
键盘固件刷写详解:Bootloader
键盘固件刷写详解:从入门到精通 引言 作为一名机械键盘爱好者,相信大家都曾经面临过刷写固件的问题。无论是想要自定义按键功能,还是升级键盘的固件,掌握刷写技巧都是非常必要的。本文将全面介绍不同类型的引导加载程序…...
网络原理初识
本来想从网络的发展史开始写,之后再写网络的定义啥的,但快写完了才发现,这不课本教材吗,没劲,遂弃之,重撰,删芜就简.写点我认为,对程序员来说真正有用的东西 目录 IP地址 概念 格式 特殊地址 端口号 概念 格式 协议 概念 知名协议的默认端口 五元组 协议分层 OS…...
PVP鼠标推荐(deepseek)
下面有不懂的自行百度查找👍 ❤️ 以下是几款在 双击性能(DBC) 和 拖拽点击(DC) 方面表现优秀的游戏鼠标推荐,结合了硬件性能、微动寿命以及玩家口碑: 1. 罗技 G102/G203 Lightsync 特点&#…...
Navee滑板车强势登陆中国,以智能科技重塑城市出行新风尚
当科技与潮流邂逅,城市出行迎来了一场前所未有的变革。全球智能出行领域的先锋品牌Navee,携其多款旗舰滑板车产品——ST3、GT3、V系列等,正式进军中国市场。凭借“颜值、性能、安全、智能”四大核心优势,Navee正以破竹之势重新定义…...
【Linux网络】网络命令
Ping Ping命令是一种用于测试网络连接状况的工具,在Windows、Linux、macOS等操作系统中都可以使用。以下是其详细介绍: 它主要通过向目标主机发送Internet控制报文协议(ICMP)的回声请求(Echo Request)数据…...
【JS逆向基础】面向对象
1,OOP编程思想 面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性和扩展性。面向对象编程是程序员发展的分水岭,很多初学者会因无法理解面向对象而放弃学习编程。 面向对象编程(Obiect:oriented Programming…...
# 如何使用OpenCV进行发票的透视变换和二值化处理
如何使用OpenCV进行发票的透视变换和二值化处理 引言 在自动化处理发票和其他文档时,图像预处理是一个关键步骤,它可以帮助提高OCR(光学字符识别)的准确性。透视变换用于校正图像中的透视失真,而二值化处理则可以简化…...
NetSuite 如何得到所有Item最近一次采购订单的货品单价?
我们知道,如果取Item主数据的数据,得到的是很多相关transaction的Item 货品平均价值;如果只想得到最近一次采购订单上的采购单价,主数据上应该无法直接得到,那该如何处理?我们可以利用Saved Search来拉取相…...
[5-2] 对射式红外传感器计次旋转编码器计次 江协科技学习笔记(38个知识点)
1、 2、 3、这些缩写通常出现在嵌入式系统或微控制器的上下文中,它们各自有不同的功能: • RCC:Reset and Clock Control(复位和时钟控制)。它负责管理微控制器的时钟系统,包括时钟源的选择、时钟频率的设置…...
阿里云 golang 一面
消息队列 分布式文件系统 Linux的虚拟网络设备 TCP SSL/TLS 场景:对于打车场景,如何设计一个系统来处理并发打车请求? 设计一个处理并发打车请求的系统需要考虑多个方面,包括系统架构、数据存储、负载均衡和实时性。以下是一个基…...
【C++ Qt】多元素控件(ListWidget、TableWidget、TreeWidget)
每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论: 本章将通过代码示例详细介绍了Qt中QListWidget、QTableWidget和QTreeWidget三种多元素控件的使用方法与核心功能,涵盖列表的增删操作、表格…...
排序算法-冒泡排序
冒泡排序一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为元素会经由交换慢…...
C++ 工具链与开发实践:构建安全、高效与创新的开发生态
引言 在 C 的技术演进中,工具链的革新与开发实践的迭代始终是推动语言生命力的核心动力。从内存安全的攻防体系到嵌入式设备的能效优化,从跨平台开发的降本增效到开发者社区的生态构建,C 正通过工具链与方法论的双重升级,应对复杂…...
uni-pages-hot-modules插件:uni-app的pages.json的模块化及模块热重载
uni-pages-hot-modules uni-app的pages.json的模块化及模块热重载 uni-app的pages.json的模块化及模块热重载 解决uni-app的pages.json无法模块化的问题,并且解决模块热重载和缓存的问题 安装 npm i uni-pages-hot-modules -Suni-app vite版本(vue3)示例项目 uni-app webpa…...
【WEB3】区块链、隐私计算、AI和Web3.0——数据民主化(1)
区块链、隐私计算、AI,是未来Web3.0至关重要的三项技术。 1.数据民主化问题 数据在整个生命周期(生产、传输、处理、存储)内的隐私安全,则是Web3.0在初始阶段首要解决的问题。 数据民主化旨在打破数据垄断,让个体能…...
从0到1:用Lask/Django框架搭建个人博客系统(4/10)
摘要:本文深入解析了使用Lask和Django构建个人博客系统的全过程。从技术选型的考量,突出Lask的轻量灵活与Django的强大功能,到开发环境搭建、项目初始化,再到核心功能实现如文章管理、用户认证与权限控制,详细阐述了开…...
探索 C++23 的 views::cartesian_product
文章目录 一、背景与动机二、基本概念与语法三、使用示例四、特点与优势五、性能与优化六、与 P2374R4 的关系七、编译器支持八、总结 C23 为我们带来了一系列令人兴奋的新特性,其中 views::cartesian_product 是一个非常实用且强大的功能,它允许我们轻…...
微软拼音自定义词库方法
1.准备文件input.txt 令狐冲 郭靖2.使用python转成微软拼音需要的格式 from xpinyin import Pinyin # pip install xpinyin -i https://pypi.tuna.tsinghua.edu.cn/simplep Pinyin()with open(input.txt, r, encodingutf-8) as infile:with open(output.txt, w, encodingutf…...
SQLite3常用语句汇总
SQLite 命令行工具(sqlite3 shell) 中的内置命令 命令作用说明.open filename.db打开或创建一个 SQLite 数据库文件.tables列出当前数据库中的所有表.schema [table]查看某个表或所有表的建表语句(DDL).headers ON/OFF开启或关闭…...
数据库设计三范式
第一范式 (1NF) 每个表中的每一列都是原子值 每个表中的每一行都是唯一的 下面这个表格就是不符合第一范式的例子:因为学时数能够拆分为讲课和实验。所以他并不是每一列都是原子值。 不仅要考虑列是否是原子值,还需要考虑每列的值是否可拆分。 第二范…...
GoWeb开发
学习目标: 本篇要达到的目的,能为后续复习提供极大便利。 (当我写下本篇博客时,已复习3遍) 一、网络通信概述 (为本篇基础核心内容) 1、什么是网络通信? 网络通信是指不同设备&…...
(7)Nokov 室内光学跟踪系统
文章目录 前言 7.1 所需硬件 7.2 Nokov 系统设置 7.3 配置旋翼机 7.4 启动 Nokov 模块 7.5 MAVProxy 准备 7.6 测试飞行 7.7 参数说明 前言 本文将介绍如何通过 Nokov 运动捕捉系统向旋翼机传输姿势信息。联系方式:NOKOV | Optical Motion Capture System。…...
Linux Shell编程和循环语句
一.for循环语句 1.for语句的结构2.for循环语句实例①根据姓名列表来批量创建多个用户②根据IP地址列表检查主机状态 二.使用while循环语句1.while语句结构2.while循环语句应用①批量添加规律编号用户②猜价格游戏 三 until循环语句1.until语句结构① 计算1-50的和 1.for语句的结…...
Java后端程序员学习前端之JavaScript
1.什么是JavaScript 1.1.概述 JavaScript是一门世界上最流行的脚本语言javaScript 一个合格的后端人员,必须要精通JavaScript 1.2.历史 JavaScript的起源故事-CSDN博客 2.快速入门 2.1.引入JavaScript 1.内部标签 <script>//.......</script> --…...
redis多路复用IO模型 以及 6.0引入的多线程模型
redis为什么选择单线程 采用多线程的话,会出现上下文切换的开销采用多线程,会带来共享资源的竞争控制,比如多个线程同时访问同一个资源(键值)时,需要额外的手段来保障共享资源的正确性,会带来额…...
101alpha_第6个
第6个alpha (-1 * correlation(open, volume, 10)) 这个就是看这两个相似性。10天之内的 如果结果为正且数值较大,投资者可能会认为在开盘价上涨时成交量萎缩,市场上涨动力不足,可能是卖出信号;反之,开盘价下跌时成交…...
crawl4ai能替代scrapy等传统爬虫框架吗?
传统爬虫框架就像拿着渔网在数字海洋中捕鱼——虽然能捞到东西,但面对现代网站的复杂性时常常"漏网之鱼"满天飞。以Scrapy为代表的工具存在三大致命短板:首先是JavaScript盲区,对动态渲染内容束手无策,就像试图用收音机…...
Sui Basecamp 2025 全栈出击
“我们不仅仅是在构建一个 L1,我们是在重建互联网。” — — Mysten Labs 首席产品官 Adeniyi Abiodun 本届 Sui Basecamp 汇聚了 Web3 领域的建设者、合作伙伴和思想领袖,为期两天,不仅展示了 Sui 的未来,也展现了去中心化互联网…...
计算机体系架构-----设计模式:状态模式(从程序员加班问题切入)
文章目录 1.梦开始的地方2.代码1.0版本3.代码2.0版本4.代码3.0版本5.梦结束的地方 最近在学习这个专业课里面的体系结构这门课程,作为专业里面的一门基础课,这个课程里面主要讲解的就是软件的设计思想,一些历程之类的,包括了面向对…...
【C/C++】RPC与线程间通信:高效设计的关键选择
文章目录 RPC与线程间通信:高效设计的关键选择1 RPC 的核心用途2 线程间通信的常规方法3 RPC 用于线程间通信的潜在意义4 主要缺点与限制4.1 缺点列表4.2 展开 5 替代方案6 结论 RPC与线程间通信:高效设计的关键选择 在C或分布式系统设计中,…...
数据结构之串
一、串的定义与基本概念 1. 串的定义 定义:串是由零个或多个字符组成的有限序列,记作 s"a1a2…an",例如 "data structure"、"123" 等。 空串:无任何字符,长度为 0,…...
基于腾讯云MCP广场的AI自动化实践:爬取小红书热门话题
基于腾讯云MCP广场的AI自动化实践:爬取小红书热门话题 我正在参加Trae「超级体验官」创意实践征文,本文所使用的 Trae 免费下载链接:www.trae.com.cn/?utm_source… 🔎 背景 在人工智能快速发展的时代,AI技术不仅重…...
AI领域的MCP(Model-Centric Paradigm)
1. 什么是MCP(Model-Centric Paradigm)? MCP(Model-Centric Paradigm)是人工智能开发中的一种核心理念,强调以模型的优化与改进作为主要驱动因素来提升AI系统的表现。在MCP模式下,开发者专注于…...
裸辞8年前端的面试笔记——JavaScript篇(一)
裸辞后的第二个月开始准备找工作,今天是第三天目前还没有面试,现在的行情是一言难尽,都在疯狂的压价。 下边是今天复习的个人笔记 一、事件循环 JavaScript 的事件循环(Event Loop)是其实现异步编程的关键机制。 从…...
力扣刷题Day 41:除自身以外数组的乘积(238)
1.题目描述 2.思路 方法1:搞一个数组存放各元素之前所有数的乘积(头为1),再搞一个数组存放各元素之后所有数的乘积(尾为1)。 方法2:上面的方法是很好理解的,在此基础上应该如何优化…...
金仓数据库征文-金仓KES数据同步优化实践:逻辑解码与增量同步
目录 一.同步场景与方案选型 二.同步环境配置 1.前置条件验证 2.逻辑解码配置 三.同步实施与问题排查 1.结构映射规则 2.增量数据捕获 3.数据一致性校验 四.性能调优实践 1.同步线程优化 2.批量提交优化 3.资源监控指标 五.典型场景解决方案 1.双向同步冲突处理 …...
【前端基础】9、CSS的动态伪类(hover、visited、hover、active、focus)【注:本文只有几个粗略说明】
一、什么是伪类 选择器的一种,用于选择处于特定状态的元素。 最常见的现象:鼠标放在某些文字上面,文字就会加上颜色。 鼠标没放上去之前: 鼠标放上去之后: 二、动态伪类 图片来源(链接文章也有其他伪…...
企业开发平台大变革:AI 代理 + 平台工程重构数字化转型路径
在企业数字化转型的浪潮中,开发平台正经历着前所未有的技术革命。从 AST(抽象语法树)到 AI 驱动的智能开发,从微服务架构到信创适配,这场变革不仅重塑了软件开发的底层逻辑,更催生了全新的生产力范式。本文…...
ZooKeeper工作机制与应用场景
目录 1.1、概述1.2、选举机制1.2.1、选举触发条件1.2.2、选举规则1.2.3、选举过程详解 1.3、数据同步机制1.3.1、正常同步1.3.2、宕机同步 1.4、客户端常用命令1.5、应用场景1.5.1、配置管理1.5.2、命令服务1.5.3、分布式锁服务1.5.4、集群管理1.5.5、分布式ID1.5.6、分布式协调…...
VR制作软件用途(VR制作软件概述)
虚拟现实(VR)制作软件作为现代科技的瑰宝,正以独特的魅力重塑各行各业。 通过构建三维虚拟环境,这些软件提供了前所未有的沉浸式体验,还推动了技术革新与产业升级。本文将探讨VR制作软件的主要用途,并重点…...