从零搭建vue+electron桌面应用

news/2025/2/21 1:29:29/

从零搭建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.ppmy.cn/news/952356.html

相关文章

【ROS】ROS1人机界面开发:第一个最简ROS+QtGui程序(按钮启动发布者)

【ROS】郭老二博文之:ROS目录 1、创建工程 1)新建工程:Other Project --> ROS Workspace 2)设置工程名称、路径 3)可以通过点击“Browse”来创建目录 注意:使用自带ros插件的qtcreator-ros,无法创建目录、也不能选择目录,这是个bug,因此需要在终端手动创建目录…

餐饮行业油烟监控管理系统设计与应用

安科瑞 华楠 摘 要:餐饮油烟污染问题已经成为城市环境污染的重要污染源,本研究的油烟在线监测数据管理信息系统是油烟在线监测数据采集仪的配套软件,用于展现现场端数据采集仪采集的数据,对数据采集仪进行远程控制,以…

意外的元素 (uri:““, local:“arg0“)。所需元素为lt;{}arg0正确解决方法

一、前言 最近在做webservice接口迁移&#xff0c;要从一个系统把webservice接口迁移到另一个系统。 新系统上写好webservice接口后&#xff0c;调用发现报错&#xff1a; 意外的元素 (uri:"http://www.xxx.com/", local:"arg0")。所需元素为<{}arg0…

chatgpt api使用教程

很高兴为您解答。ChatGPT API是一个用于训练和部署聊天机器人的开源API。它可以帮助您构建自定义的聊天机器人&#xff0c;以满足您的业务需求。您可以通过以下步骤来使用ChatGPT API&#xff1a; 1.训练模型&#xff1a;使用ChatGPT API训练您的聊天机器人模型&#xff0c;以便…

nest.js 添加 swagger 响应数据文档

基本使用 通常情况下&#xff0c;在 nest.js 的 swagger 页面文档中的响应数据文档默认如下 此时要为这个控制器添加响应数据文档的话&#xff0c;只需要先声明 数据的类型&#xff0c;然后通过ApiResponse 装饰器添加到该控制器上即可&#xff0c;举例说明 todo.entity.ts …

jq动态设置复选框被选中

要动态设置一个复选框被选中&#xff0c;你可以使用jQuery的prop()方法。 下面是一个示例&#xff1a; <input type"checkbox" id"IsOpenAccount" name"IsOpenAccount" >JavaScript代码&#xff1a; $("#IsOpenAccount").prop(…

ChatGPT重磅更新:可关闭聊天历史记录,企业订阅版即将发布!

整理 | 陈静琳 责编 | 屠敏 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 由ChatGPT引发的热潮席卷全球&#xff0c;随之而来&#xff0c;ChatGPT 新技术带来的数据保护问题及个人隐私挑战也进入人们的视野。近日&#xff0c; ChatGPT 更新的功能恰好了针…

wpf prism使用

目录 1.Nuget中安装prism框架&#xff1a; 2.改造程序启动入口 3.View和ViewModel自动关联 4.绑定 5.Command 6.Event Aggregator&#xff08;事件聚合器&#xff09;、消息通知 7.弹窗、对话服务 DialogService 8.Region区域 9.Navigation导航 10.module 模块 1.Nug…