electron开发桌面应用

Electron + Vue3 项目搭建

npm i @vue/cli -g
vue create electron-vue-demo
cd electron-vue-demo
vue add electron-builder

问题:由于网络的原因,Electron 可能会安装失败:
解决:我是 mac 开发,只介绍 mac 的方法

打开链接https://github.com/electron/electron/releases/tag/v$VERSION
这个地址下载文件(这里的 $VERSION 是 Electron 的确切版本)。
比如我的是 14.0.0 版本 我下载的文件是 electron-v14.0.0-darwin-x64.zip
下载完成后,放到~/Library/Caches/electron/文件夹下

初始项目目录

渲染进程的页面交给了 vue 进行渲染,开发过程和我们平时使用 vue 开发 web 页面没啥区别,而 electron 主进程的代码是放在 background.js 中。
项目目录

开发中遇到的问题

  • 主进程和渲染进程通信

通过 ipc 进行通信具体代码如下;
渲染进程:

import { ipcRenderer } from 'electron'
....
ipcRenderer.send('setCookie', { loginCookie, indexUrl })
....

主进程:

import { ipcMain } from 'electron';
···
// on的方法名要和渲染进程的保持一致
ipcMain.on('setCookie', (event, args) => {
	// args是渲染进程通信传过来的参数
	const { loginCookie, indexUrl } = args;
	// 处理你的业务
});
···
  • preload 预加载使用

在 utils 文件夹下创建 preload.js

  1. 在 vue.config.js 中添加
module.exports = {
    pluginOptions: {
        electronBuilder: {
            preload: 'src/utils/preload.js',
        },
    },
}
  1. 在主进程中
// 将preload的文件路径保存在全局变量中
global.shareObject = {
    preloadPath: path.join(__dirname, 'preload.js'),
}
const win = new BrowserWindow({
    webPreferences: {
        preload: path.join(__dirname, 'preload.js'),
    },
})
  1. 渲染进程中使用
import { getGlobal } from '@electron/remote'
import { computed } from 'vue'
// preload不支持http协议,加载本地文件需强制可强制写为file协议
const preloadPath = computed(() => {
    return 'file://' + getGlobal('shareObject').preloadPath
})
  • electron 图标打包

在 vue.config.js 中添加

module.exports = {
    pluginOptions: {
        electronBuilder: {
            // window需要ico文件,mac需要icns文件
            builderOptions: {
                // window需要256*256大小的
                win: {
                    icon: 'src/assets/favicon.ico',
                },
                mac: {
                    icon: 'src/assets/favicon.icns',
                },
            },
        },
    },
}
  1. ico 图标生成网站(链接
  2. icns 图标生成:

(1) 准备一个 1024 * 1024 的 png 图片,假设名字为 icon.png
(2) 命令行 $ mkdir tmp.iconset,创建一个临时目录存放不同大小的图片
(3) 把原图片转为不同大小的图片,并放入上面的临时目录

//全部拷贝到命令行回车执行,执行结束之后去 tmp.iconset 查看十张图片是否生成好
sips -z 16 16     icon.png --out tmp.iconset/icon_16x16.png
sips -z 32 32     icon.png --out tmp.iconset/icon_16x16@2x.png
sips -z 32 32     icon.png --out tmp.iconset/icon_32x32.png
sips -z 64 64     icon.png --out tmp.iconset/icon_32x32@2x.png
sips -z 128 128   icon.png --out tmp.iconset/icon_128x128.png
sips -z 256 256   icon.png --out tmp.iconset/icon_128x128@2x.png
sips -z 256 256   icon.png --out tmp.iconset/icon_256x256.png
sips -z 512 512   icon.png --out tmp.iconset/icon_256x256@2x.png
sips -z 512 512   icon.png --out tmp.iconset/icon_512x512.png
sips -z 1024 1024   icon.png --out tmp.iconset/icon_512x512@2x.png

4 通过 iconutil 生成 icns 文件 $ iconutil -c icns tmp.iconset -o Icon.icns,此时你的目录应该有了你想要的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Electron是一个使用JavaScript,HTML和CSS构建桌面应用程序的框架。通过将Chromium和Node.js嵌入到其二进制文件中,Electron允许开发者维护一个JavaScript代码库,并创建可在Windows,macOS和Linux上运行的跨平台应用程序,无需本机开发经验。使用Electron开发桌面应用可以将现有的Web技术与原生应用的功能相结合,同时还能够利用Electron丰富的API和工具来增强应用的功能和性能。 创建一个Electron应用程序遵循与其他Node.js项目相同的一般结构。首先需要在电脑上安装Node.js,然后通过命令行创建一个文件夹并初始化一个npm包。接下来,可以使用npm安装Electron依赖和其他必要的库。在初始化完成后,可以开始编写应用程序的主要代码,使用HTML,CSS和JavaScript来创建用户界面和实现应用功能。最后,使用Electron提供的打包工具将应用程序打包成可执行文件,可以在各个操作系统上进行安装和运行。 使用Electron可以快速开发出一个功能完善的桌面应用程序,并且能够跨平台运行,为用户提供更好的用户体验。同时,由于使用了Web技术,开发者可以充分利用现有的前端开发经验和工具,提高开发效率。因此,Electron成为了很多开发者选择的框架之一。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用Electron构建桌面应用](https://download.csdn.net/download/weixin_38749268/15444248)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【Electron桌面应用开发](https://blog.csdn.net/weixin_64172426/article/details/126094153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值