从零搭建vue+electron桌面应用

news2024/11/30 1:45:24

从零搭建vue+electron桌面应用

    • 一、准备工作
      • 1.全局下载electron
      • 2.全局下载vue脚手架
      • 3.创建vue项目(这里用的是vue2版本)
      • 4.安装打包插件
      • 5.安装electron-builder,安装后可以直接生成主进程的配置文件
      • 6.在vue.config.js中添加以下配置
    • 二、运行项目
    • 三、打包
    • 四、渲染进程和主进程通信
      • 1.在background.js中引入ipcMain并书写监听代码
      • 2.在vue组件中引入ipcRenderer并发送消息

一、准备工作

1.全局下载electron

npm install -g electron

2.全局下载vue脚手架

npm install -g @vue/cli

3.创建vue项目(这里用的是vue2版本)

vue create my-electron-app

4.安装打包插件

首先进入项目目录

cd my-electron-app

安装打包插件

npm install electron-builder --save-dev

5.安装electron-builder,安装后可以直接生成主进程的配置文件

vue add electron-builder

6.在vue.config.js中添加以下配置

chainWebpack: config => {
	config.plugins.delete('preload')
	config.plugins.delete('prefetch')
	config.entry('app').clear().add('./src/main.js').end()
},
pluginOptions: {
	electronBuilder: {
		nodeIntegration: true,
		builderOptions: {
			appId: 'com.YourAppId',
			"productName": "YourApp",
		}
	}
}

在这里插入图片描述

作完以上步骤之后,会在src根目录生成background.js,这个文件就是electron的主进程配置文件,可以在里面写一些electron的配置信息
在这里插入图片描述

二、运行项目

npm run electron:serve

输入以上命令等待片刻就可以打开应用了
在这里插入图片描述

三、打包

npm run electron:build

打包过程中可能会遇到报错

Get “https://github.com/electron-userland/electron-builder-binaries/releases/download/nsis-resources-3.4.1/nsis-resources-3.4.1.7z”: dial tcp 20.205.243.166:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
github.com/develar/app-builder/pkg/download.(*Downloader).follow.func1
/Volumes/data/Documents/app-builder/pkg/download/downloader.go:206
github.com/develar/app-builder/pkg/download.(*Downloader).follow
/Volumes/data/Documents/app-builder/pkg/download/downloader.go:234
github.com/develar/app-builder/pkg/download.(*Downloader).DownloadNoRetry
/Volumes/data/Documents/app-builder/pkg/download/downloader.go:128
github.com/develar/app-builder/pkg/download.(*Downloader).Download
/Volumes/data/Documents/app-builder/pkg/download/downloader.go:112
github.com/develar/app-builder/pkg/download.DownloadArtifact
/Volumes/data/Documents/app-builder/pkg/download/artifactDownloader.go:107
github.com/develar/app-builder/pkg/download.ConfigureArtifactCommand.func1
/Volumes/data/Documents/app-builder/pkg/download/artifactDownloader.go:27
github.com/alecthomas/kingpin.(*actionMixin).applyActions
/Volumes/data/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/actions.go:28
github.com/alecthomas/kingpin.(*Application).applyActions
/Volumes/data/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:557
github.com/alecthomas/kingpin.(*Application).execute
/Volumes/data/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:390
github.com/alecthomas/kingpin.(*Application).Parse
/Volumes/data/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:222
main.main
/Volumes/data/Documents/app-builder/main.go:90
runtime.main
/usr/local/Cellar/go/1.16.5/libexec/src/runtime/proc.go:225
runtime.goexit
/usr/local/Cellar/go/1.16.5/libexec/src/runtime/asm_amd64.s:1371

这是因为网络的原因导致的,遇到这种情况只能手动下载对应的包,然后粘贴到对应的目录
以报错代码为例,手动下载:https://github.com/electron-userland/electron-builder-binaries/releases/download/nsis-resources-3.4.1/nsis-resources-3.4.1.7z
然后将其复制到下图的目录中(你的目录地址不一定和我的一样,需要根据找到自己的目录地址)
在这里插入图片描述
下载完成后重新执行

npm run electron:build

四、渲染进程和主进程通信

1.在background.js中引入ipcMain并书写监听代码

引入ipcMain

import { app, protocol, BrowserWindow, ipcMain } from 'electron'

书写监听代码

// 在主进程中监听消息 第一个参数为事件名称,第二个参数为回调函数
ipcMain.on('message-from-renderer', (event, str) => {
	console.log('主进程收到消息:',str) // 打印从渲染进程接收到的消息
	event.sender.send('message-to-renderer', 'Reply from main process') //给渲染进程发送消息
})

2.在vue组件中引入ipcRenderer并发送消息

引入ipcRenderer

const { ipcRenderer } = require('electron')

给主进程发送消息

ipcRenderer.send('message-from-renderer', '消息字符串')

监听主进程发送过来的消息

ipcRenderer.on('message-to-renderer', (event, message) => {
  console.log(message) // 输出接收到的回复消息
})

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

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

相关文章

SpringCloud(五)Gateway 路由网关

一、路由网关 官网地址:https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/ 我们需要连接互联网,那么就需要将手机或是电脑连接到家里的路由器才可以,而路由器则连接光猫,光猫再通过光纤连接到互联网&a…

Linux 的远程唤醒

Linux (Ubuntu、Debian、Centos …) 的远程唤醒 环境说明: 两台局域网内的 linux 主机,本环境的系统为 loongnix 目的主机为:IP 192.168.12.11 MAC 86:d8:60:47:28:22远程主机为:IP 192.168.12.15 一、唤醒准备工作 (目的机上操…

Sentinel限流--流控模式与限流效果

文章目录 1、簇点链路2、流控入门案例3、流控模式:关联模式4、流控模式:链路模式5、流控效果:warm up6、限流效果:排队等待7、热点参数限流 1、簇点链路 簇点链路就是项目内的调用链路(controller -> servcie ->…

python-在transformers的问答模型中使用中文

先安装transformers在huggingface下载模型 模型bert-multi-cased-finetuned-xquadv1可以从huggingface中下载,具体操作方法可以参照文章https://blog.csdn.net/zhaomengsen/article/details/130616837下载 git clone就可以了然后使用pipline加载模型 from transfor…

【卫朋】华为 IFS 集成财经服务流程(限制版)

目录 简介 集成财经服务 专栏列表 CSDN学院 简介 今天主要来谈谈华为流程体系中的财经流程。 大家可以看下面这张图。 深蓝色标注的就是 IFS 流程的在企业整体流程架构中的位置。 财经部门其实也是直接或间接跟客户打交道的。 这就意味着,财经也是需要做端到…

Unity源码分享-大量鱼类模型Underwater Animals Pack

Unity源码分享-大量鱼类模型Underwater Animals Pack 下载地址:https://download.csdn.net/download/Highning0007/88061483

FPGA XDMA 中断模式实现 PCIE3.0 HDMI视频采集卡 提供2套工程源码和QT上位机源码

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案视频采集和缓存XDMA简介XDMA中断模式QT上位机及其源码 5、vivado工程详解6、上板调试验证7、福利:工程代码的获取 1、前言 PCIE(PCI Express)采用了目前业内流行的点对点串…

中国芯片发出怒吼,要求回购700台光刻机,ASML承受不起

多家媒体报道指国内知名存储芯片企业长江存储的董事长指出已买回的光刻机因维护和零件问题可能无法使用,因此提出基于公平原则,ASML理应回购这些光刻机,凸显出中国芯片企业的愤怒。 由于美国的阻挠,ASML不仅不会继续对中国出售先进…

工厂方法模式(java)

目录 结构 案例 类图 代码实现 抽象咖啡工厂 美式咖啡工厂 拿铁咖啡工厂 咖啡类(抽象产品类) 美式咖啡 拿铁咖啡 咖啡店类 测试类 优缺点 优点 缺点 结构 工厂方法模式的主要角色: 抽象工厂(Abstract Factory&…

MySQL常用语句

目录 连接MySQL 数据库操作 表的操作 数据操作 进阶查询 源码等资料获取方法 连接MySQL -- 语法:mysql -u用户名 -p密码 注:--空格 起到注释的作用 mysql -uroot -p123456 数据库操作 -- 显示当前时间、用户名、数据库版本(可以单独…

NodeJS实现支付宝沙箱支付②③

文章目录 前言版权声明Alipay SDK 沙箱环境简介Node环境要求沙箱环境配置下载所需模块准备前端静态页面以及Node服务器文件夹规范AlipaySdk 配置准备AlipaySdk 代码演示 Alipay实例化 ~ alipay.sdk 文件 AlipayForm ~ alipayForm文件 AlipayFormStatus ~ alipayForm文件 …

MQTT协议在物联网环境中的应用及代码实现解析(四)

四、使用单片机环境编程接收MQTT服务器上特定主题的信息 以下是使用STM32F103单片机链接W5500芯片链接到网络上,利用MQTT协议接收MQTT服务器“mqtt.laobai.net”上的“laobai_topic001”主题上的订阅信息,并发送给串口的C语言代码示例,包括完…

C语言——指针详解(进阶)

轻松学会C语言指针 一、字符指针二、数组指针2.1 数组指针的定义2.2 &数组名VS数组名2.3 数组指针的使用 三、指针数组四、数组参数和指针参数4.1 一维数组传参4.2 二维数组传参4.3 一级指针传参4.4 二级指针传参 五、函数指针六、函数指针数组七、指向函数指针数组的指针八…

计算机网络微课堂学习笔记(详细图解讲解)-长期更新

前言: 计算机网络在信息时代的作用 计算机网络已由一种通信基础设施发展成为一种重要的信息服务基础设施,计算机网络已经像水、电、煤气这些基础设施一样,成为我们生活中不可或缺的一部分 一、因特网概述 (1)网络、…

ChatGPT火热之下的冷思考

作为一款基于人工智能的自然语言处理(NLP)​​聊天机器人​​程序,ChatGPT通过大量来自互联网的文本进行训练,并使用深度学习和机器学习算法来理解用户的问题并提供准确的回答。并且,ChatGPT还内置了情感分析、关键字提取和实体识别等功能&am…

ngsoc使用指南

和威胁告警差不多。 ngsoc是以资产为核心,以安全事件为管理的关键流程,建立一套威胁检测,相应,预测,和持续监控分析,一体化的监控与相应平台。 和天眼的区别:会把天眼的告警,其他安…

【041】从零开始:逐步学习使用C++ STL中的stack容器

从零开始:逐步学习使用C STL中的stack容器 引言一、stack容器概述二、stack容器常用API2.1、构造函数2.2、赋值操作2.3、数据存取操作2.4、大小操作 三、使用stack容器实现一个高效的算法总结 引言 💡 作者简介:一个热爱分享高性能服务器后台…

安达发|如何选择更适合我们的APS高级排程软件

如何选择aps高级排程公司更适合我们?在选购aps高级排程的时候,一些朋友由于不清楚其中的选购技巧,许多时候会掉入些许选择误区,导致我们买不了合适我们选择的aps高级排程。因此选择适合我们的aps高级排程就变得十分重要,唯有明白…

23.JavaWeb-集群+Nginx+JMeter

1.集群概念 平时用的服务是的并发量是有限的,像tomcat只有不到500的并发量,不能满足高并发的需求,因此就采用了集群的方法,用多个服务器 当用户请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而…

项目中使用拆分数据库的优势

为什么要拆分数据库? 取决于数据库的负载和数据量。 单体项目在构建之初,数据库的负载和数据量都不大,所以不需要对数据库做拆分,小型财务系统、文书系统、ERP系统、OA系统,用一个MySQL数据库实例基本就够用了。 就…