尝鲜electron --将已有vue/react项目转换为桌面应用

Electron 是一个强大的框架,它允许开发者使用 Web 技术(如 HTML、CSS 和 JavaScript)构建跨平台的桌面应用程序。它结合了 Node.js 和 Chromium,就相当于在桌面程序=web和游览器,所以只需要简单的配置就可以转换为桌面应用

注意:无关镜像,有些依赖就是需要从git上面手动下载,所以特别是打包模块,需要一步一步下载手动安装

转换为桌面app

添加依赖

yarn add --dev electron

如果下载失败 根据输出的连接手动添加到用户的eletron目录

C:\Users用户名\AppData\Local\electron\Cache

在这里插入图片描述

在已有的根项目(这里是vite+vue)创建一个electron文件夹并且创建俩个文件,一个主进程文件,一个预加载文件
main.js

const { app, BrowserWindow } = require('electron')
const path = require('path')let mainWindowfunction createWindow() {
//默认的窗口大小 可以windos 快捷栏进行打开mainWindow = new BrowserWindow({width: 800,height: 600,webPreferences: {preload: path.join(__dirname, 'preload.js'), // 可以根据需要添加nodeIntegration: true // 启用Node.js API}})if (process.env.WEBPACK_DEV_SERVER_URL) {// 如果是开发环境, 加载开发服务器URLmainWindow.loadURL(process.env.WEBPACK_DEV_SERVER_URL)if (!process.env.IS_TEST) {mainWindow.webContents.openDevTools()}} else {// 如果是生产环境, 加载Vue打包后的文件mainWindow.loadFile(path.join(__dirname, '../dist/index.html'))}mainWindow.on('closed', () => {mainWindow = null})
}app.on('ready', createWindow)app.on('window-all-closed', () => {if (process.platform !== 'darwin') {app.quit()}
})app.on('activate', () => {if (mainWindow === null) {createWindow()}
})

preload.js

// 所有Node.js API都可以在预加载过程中使用。
// 它拥有与Chrome扩展一样的沙盒。
window.addEventListener('DOMContentLoaded', () => {const replaceText = (selector, text) => {const element = document.getElementById(selector)if (element) element.innerText = text}for (const dependency of ['chrome', 'node', 'electron']) {replaceText(`${dependency}-version`, process.versions[dependency])}
})
  1. 然后在package。json
    添加指令 注意有type :"moddule"的话会报错 需要注释
  "main": "electron/main.js","electron": "electron .","scripts": {"dev": "vite","start": "electron .",

3.先运行项目 然后 yarn start

打包

打包设置
配置build 报答的各个属性 output打包后的安装包输出目录

  "scripts": {"dev": "vite","start": "electron .","electron:build": " vite build && electron-builder","build": "vue-tsc --noEmit && vite build","preview": "vite preview","lint": "eslint --fix --ext .vue,.jsx,.ts,.tsx ."},"build": {"electronDownload": {"mirror": "https://npm.taobao.org/mirrors/electron/"},"appId": "com.example.app","productName": "版本管理系统","files": ["dist/**/*","electron/**/*"],"directories": {"output": "setup","buildResources": "build"},"win": {"icon": "asset/NSHM_PHOTO_2024_7_24_03_01_45.jpg" ,"target": ["nsis"]},"nsis": {"oneClick": false,"perMachine": true,"allowToChangeInstallationDirectory": true}},

1.下载依赖

npm install electron electron-builder --save-dev

这里开始这个打包的东西就感觉很慢了 可以根据console 控制台输出手动下载
如果下载失败
可以手动下载 放在目录

C:\Users\用户名\AppData\Local\electron-builder\Cache

在这里插入图片描述

winCodeSign-2.6.0 下载失败,复制手动下载
然后这个cache目录新建winCodeSign文件夹 然后把压缩包进入进行解压
在这里插入图片描述

针对 nsis-3.0.4.1 下载失败:

同理复制console报错的地址下载完成后,新建nis文件夹然后:nsis解压
在这里插入图片描述
在这里插入图片描述

nsis-resourcers-3.4.1
同理下载后 在刚才的创建nsis目录解压
在这里插入图片描述

此时可以运行package.json 配置的打包指令
yarn electron:build
此时控制台会报错,但是配置的setup文件夹已经有安装程序了
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA关联Tomcat——最新版本IDEA 2024

1.链接Tomcat到IDEA上 添加Tomcat到IDEA上有两种方式: 第一种: (1)首先,来到欢迎界面,找到左侧的Customize选项 (2)然后找到Build、Execution、Deployment选项 (3&am…

Prism 四事件聚合器

#1024程序员节|征文# 不废话,直接上代码一个简单的示例。 1、事件聚合 创建一个文件夹EventBLL,添加EventDemo.cs,代码如下。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using …

.NET使用QuestPDF高效地生成PDF文档

前言 在.NET平台中操作生成PDF的类库有很多如常见的有iTextSharp、PDFsharp、Aspose.PDF等,今天我们分享一个用于生成PDF文档的现代开源.NET库:QuestPDF,本文将介绍QuestPDF并使用它快速实现发票PDF文档生成功能。 QuestPDF介绍 QuestPDF 是…

什么样的JSON编辑器才好用

简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也便于机器解析和生成。随着互联网和应用程序的快速发展,JSON已经成为数据传输和存储的主要格式之一。在处理和编辑JSON数据…

Python开发日记 -- 实现bin文件的签名

目录 1.数据的不同表现形式签名值不一样? 2.Binascii模块简介 3.问题定位 4.问题总结 1.数据的不同表现形式签名值不一样? Happy Muscle试运行了一段时间,组内同事再一次提出了新的需求:需要对bin文件签名。 PS:服…

vue3 树型视图,利用自定义SFC来定义一个TreeItem,然后进行渲染出一个树形。

1、我们在各种项目中都会碰到树形的视图,所以说这个还是很重要的。 2、项目中我们一般会用现成的组件(ant-design、element)来处理,这里我们使用自定义的方法,提供一个data来处理,比如这样: 最…

【大数据分析与挖掘模型】matlab实现——非线性回归预测模型

一、实验目的 掌握有关非线性回归的理论知识,通过变量代换把本来应该用非线性回归处理的问题近似转化为线性回归问题,并进行分析预测。 二、实验任务 对非线性回归实例进行编码计算,实例如下: 三、实验过程 1.运行非线性回归中…

AJAX—— jQuery 发送 AJAX 请求

1、get 请求 $.get(url,[ data ] , [ callback ] , [ type ]) url :请求的 URL 地址 data :请求携带的参数 callback :载入成功时回调函数 type :设置返回内容格式(xml&#xf…

duilib的应用 在双屏异分辨率的显示器上 运行显示不出来

背景:win11,duilib应用,双显示器,两台分辨率相同,分别设置不同的缩放以后,应用运行以后,程序闪一下消失或者程序还在,但是UI显示不出来。 原因 窗口风格设置不合理,所以…

什么是域名?什么是泛域名?

域名 定义 域名是互联网上用于识别和定位网站或网络服务的名称。它是由一串用点分隔的字符组成,例如 “baidu.com”。就像是现实生活中建筑物的地址,方便用户在互联网的海量信息中找到特定的网站。 结构 域名从右到左依次为顶级域名(TLD&…

【Python爬虫系列】_031.Scrapy_模拟登陆中间件

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…

【ArcGIS微课1000例】0125:ArcGIS矢量化无法自动完成面解决方案

文章目录 一、坐标系统问题二、正确使用自动完成面工具一、坐标系统问题 1. 数据库坐标系 arcgis矢量化的过程中,无法自动完成面,可能是因为图层要素没有坐标系造成的。双击数据库打开数据库属性,可以查看当前数据框的坐标系。 2. 图层坐标系 双击图层,打开图层属性,切…

csa练习1

1、修改当前主机名为rhcsa,设置当前时区为Asia/Shanghai 2、在/home/和/root目录下面创建file1文件和dir1目录 3、在/home/file1文件里面写入内容hello,welcome to home 4、在/root/file1文件里面写入当前的时间并写入内容this is administrator 5、在/r…

Etcd 可观测最佳实践

简介 Etcd 是一个高可用的分布式键值存储系统,它提供了一个可靠的、强一致性的存储服务,用于配置管理和服务发现。它最初由 CoreOS 开发,现在由 Cloud Native Computing Foundation (CNCF) 维护。Etcd 使用 Raft 算法来实现数据的一致性&…

基于GPT的智能客服落地实践

📍前言 在日常生活中,「客服」这个角色几乎贯穿着我们生活的方方面面。比如,淘宝买东西时,需要客服帮你解答疑惑。快递丢失时,需要客服帮忙找回。报名参加培训课程时,需要客服帮忙解答更适合的课程…… 基…

fpga开发环境总结

这里使用Altera(阿尔特拉)Cyclone IV E系列的EP4CE10F17C8开发为例,参考正点原子开发板手册进行总结,。 一,Quartus II介绍。 1,Quartus II 是 Altera 公司的综合性 FPGA 开发软件,可以完成从设…

软件测试人员必问的十大面试题..

在软件测试职位面试中,准备并回答一些常见的必问面试题非常重要。这些问题涵盖了软件测试的关键概念、技术和实践,帮助面试官评估你的能力和经验。理解这些问题的重要性是为了在面试中展示你的专业知识和技能,以及你在软件测试领域的实际应用…

使用RabbitMQ实现延迟消息的完整指南

在分布式系统中,消息队列通常用于解耦服务,RabbitMQ是一个广泛使用的消息队列服务。延迟消息(也称为延时队列或TTL消息)是一种常见的场景应用,特别适合处理某些任务在一段时间后执行的需求,如订单超时处理、…

零基础Java第十期:类和对象(一)

目录 一、拜访对象村 1.1. 什么是面向对象 1.2. 面向对象与面向过程 二、类定义和使用 2.1. 类的定义格式 2.2. 类的定义练习 三、类的实例化 3.1. 什么是实例化 3.2. 类和对象的说明 四、this引用 4.1. 什么是this引用 4.2. this引用的特性 一、拜访对象村 在…

使用python代码绘制好看的统计图

代码功能 上述代码使用 matplotlib 和 seaborn 生成四种不同的统计图,具体如下: 玫瑰图:在极坐标上绘制柱状图,展示不同角度的数值分布。雷达图:绘制多维数据的雷达图,用于对比不同维度的数值。热力图&am…