使用electron套壳vue实现跨平台桌面应用

news2024/12/23 20:29:10

electron和vue是什么就不用多说了,前端都知道
先展示一波demo 传送门

前提条件

要有一个vue项目,老项目跳过

vue create hello-world

改造vue项目

  1. 在根目录新建一个background.js文件,也可以叫其他名字,作为package.jsonmain的值,贴入一下代码
const { app, BrowserWindow, screen, ipcMain, nativeTheme } = require('electron')
const path = require('path')

// 热加载
try {
  require('electron-reloader')(module,{});
} catch (_) {}

const createWindow = () => {
  const win = new BrowserWindow({
    width: screen.getPrimaryDisplay().workAreaSize.width, // 直接显示最宽窗口,非最大化
    height: screen.getPrimaryDisplay().workAreaSize.height, // 直接显示最高窗口,非最大化
  })
  // console.log(process.env.NODE_ENV)
  if (process.env.NODE_ENV === 'development') {
    win.webContents.openDevTools() // 开发环境自动打开devtools
    win.loadURL('http://localhost:8090') // 开发环境加载本地服务
  } else {
    win.loadFile('./dist/index.html') // 非开发环境加载打包后的静态页面
  }
}

app.whenReady().then(() => {
  createWindow()
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') app.quit()
})
  1. 修改package.jsonmain节点
"main": "background.js"
  1. 安装依赖
"dependencies": {
	"core-js": "^3.6.5",
    "electron-squirrel-startup": "^1.0.0",
    "vue": "^3.0.0",
    "vue-router": "^4.0.0-0",
    "vuex": "^4.0.0-0"
}
"devDependencies": {
	"cross-env": "^7.0.2",
	"@electron-forge/cli": "^6.1.1",
	"@electron-forge/maker-deb": "^6.1.1",
	"@electron-forge/maker-rpm": "^6.1.1",
	"@electron-forge/maker-squirrel": "^6.1.1",
	"@electron-forge/maker-zip": "^6.1.1",
	"@vue/cli-plugin-babel": "~4.5.13",
	"@vue/cli-plugin-router": "~4.5.13",
	"@vue/cli-plugin-vuex": "~4.5.13",
	"@vue/cli-service": "~4.5.13",
	"@vue/compiler-sfc": "^3.0.0",
	"electron": "^24.3.1",
	"electron-reloader": "^1.2.3",
	"sass": "^1.26.5",
    "sass-loader": "^8.0.2",
}
  1. 修改启动脚本
"scripts": {
   "dev":"vue-cli-service serve",
   "build": "vue-cli-service build",
   "start": "cross-env NODE_ENV=development electron-forge start",
   "package": "electron-forge package",
   "make": "cross-env NODE_ENV=production electron-forge make"
 },

本地运行和打包采用的是electron官方推荐的electron-forge插件。

开发流程

在本地执行npm run dev,再执行npm run startbackground.js中的 createWindow 方法中判断是开发环境,加载本地服务地址。你将会看到如下窗口
在这里插入图片描述

打包流程

执行npm run build先把vue打包为静态页面,再执行npm run makecreateWindow 方法中判断是非开发环境,加载打包后的静态页面。

注意:不同平台的应用需在对应的操作系统上打包

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

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

相关文章

C Primer Plus第五章编程练习答案

学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 1.编写一个程序,把用分钟表…

微信小程序---表格的制作并展示云数据库中的数据

微信小程序并没有表格组件,可能是官方考虑到,在前端开发中,表格的嵌套性太多,用DIV代码会比较简洁就没有实现吧。没有现成的组件可以使用,针对这个问题,目前有两种解决方案: 1)内嵌…

怎么发表CCF期刊?CCF期刊有什么不同之处? - 易智编译EaseEditing

发表CCF期刊,可以参考一下步骤: 选择目标期刊: 首先选择一个适合自己的目标期刊,可以是CCF推荐的高水平期刊,也可以是其他被广泛认可的期刊。 撰写论文: 根据目标期刊的要求,撰写论文。确保论…

「恋爱事务」NFT 作品集

「恋爱事务 (Love Affairs)」服装 NFT系列允许玩家在体验中使用 Opera Garnier 歌剧院的 T台大厅,并参与互动竞赛。参与 The Sandbox 元宇宙首个以爱情为主题的概念时装秀! 该系列已于 5 月 22 日晚上 11 点在 The Sandbox 市场平台上线。 NFT 系列介绍 …

go-zero的服务发现源码阅读

服务发现原理与grpc源码解析_wangxiaoangg的博客-CSDN博客 go-zero rpc demo官方文档:rpc编写与调用 | go-zero 目录 一 服务注册 1. 创建rpc服务 2. 启动rpc服务 3. registerEtcd做了什么 4. discov.NewPublisher 服务发布者 二 服务发现 1.定义&注册re…

如何在华为OD机试中获得满分?Java实现【差值数组不同的字符串】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

本地vue搭建的web网站项目app如何发布到互联网?

对于非专业人来说,提到 Vue并不熟悉。Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建。 简单来说,Vue是干什么用的呢?Vue通过提供了一套声明式的、组件化的编程模型,帮助你高效地开发用…

七、SpringBoot从入门到精通

一、SpringBoot概述 Spring Boot是一个基于Spring框架的开发框架,用于快速构建能够立即运行的生产级Spring应用程序。它是Spring的一个子项目,致力于使Spring开发更加简单、快速和便捷。 二、SpringBoot基础程序 1、点击Spring Initializer&#xff0…

苹果MR头显背后的秘密武器,ARKit演进历程一览

苹果MR头显可以说是板上钉钉了,看了这么多的预测,几乎没有从ARKit的角度来看苹果头显的,因此本文我们将回顾ARKit近7年来的发展历程。 实际上,ARKit 3.5开始支持LiDAR(首个搭载的设备是iPad Pro 2020)就是…

信号隔离器在水处理控制系统的应用

摘要:水处理控制系统中,其控制、监测模块的非电量模拟量传感器采用信号隔离器的接线方式合理地解决了相关模拟量传感器供电电源安全和相对独立的问题,保证了监测模块的电源、模拟量采集模块和输出模块的相对隔离,降低了可能会造成…

我想成为一名黑客

什么是黑客? 首先我们需要知道什么是黑客呢?黑客最初是指水平高超的电脑专家,而骇客就是我们常见的爱搞破坏的家伙。 黑客和骇客有什么区别呢? 如果黑客是制造炸弹的专家,那骇客就是拿着炸弹到处乱炸的坏蛋。 怎么…

如何在华为OD机试中获得满分?Java实现【合并 K 个升序链表】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

【JAVA进阶】异常处理

📃个人主页:个人主页 🔥系列专栏:JAVASE基础 目录 1.异常概述、体系 2.常见运行时异常 3.常见编译时异常 4.异常的默认处理流程 5.编译时异常的处理机制 6.运行时异常的处理机制 7.finally 8.自定义异常 1.异常概述、体系…

VUE A页面跳转到B页面带参数,且每次点击跳转,数据刷新

这里写目录标题 一、描述二、VUE带参数页面跳转跳转方式&#xff1a;1&#xff09;标签<router-link>2&#xff09;js操作跳转 三、B页面实现每次点击参数变化&#xff0c;数据刷新解决方案&#xff1a;1&#xff09;去除缓存。2&#xff09;watch监听router 背景&#x…

香港:禁止中国内地参与虚拟资产交易!散户不可交易稳定币,放开不意味着放松!

前天&#xff0c;香港证监会&#xff08;SFC&#xff09;公布了对虚拟资产交易的开放态度和监管思路&#xff0c;宣布《适用于虚拟资产交易平台营运者的指引》&#xff08;下简称《指引》&#xff09;将于2023年6月1日生效。 虽然SFC对于公众提出的建议给予了很完整的回应&…

领导下发紧急且风险大的任务,如何处理?

在遇到这种无法拒绝&#xff0c;明显很难按时交付的紧急任务时&#xff0c;项目经理处理的关键&#xff1a; 1、降低关键干系人期望值 降低关键干系人的期望值&#xff0c;是项目管理非常重要的一门艺术&#xff0c;也是让干系人满意&#xff0c;便于与关系人沟通的关键。 在项…

多地住建局推广工程资料电子化,帮助工程企业“降本增效”

工程资料签署和管理是每个在建工程绕不开的课题&#xff0c;庞大的签署量、动则几十万的签署成本如何优化&#xff1b;有关部门的合规审查如何过关…纸质工程资料需要面对的难题还有很多&#xff1a; 麻烦&#xff1a;从工程立项申报、审批、设计、施工到验收等全过程中产生的大…

7-事务

目录 1.什么是事务&#xff1f; 2.为什么用事务&#xff1f; 3.事务怎么用&#xff1f; 4.事务的四大特性&#xff08;ACID&#xff09; ①原子性&#xff08;Atomicity&#xff0c;又称不可分割性&#xff09; ②一致性&#xff08;Consistency&#xff09; ③隔离性&a…

文本转语音怎么转?教你三招轻松搞定

近年来&#xff0c;人工智能技术飞速发展&#xff0c;语音合成技术 (TTS) 已经被广泛应用于各种应用场景中。在日常生活中&#xff0c;人们经常需要阅读长篇文章、新闻报道、科技论文等&#xff0c;但传统的阅读方式不仅效率低下&#xff0c;而且容易让人感到疲劳。随着语音合成…

品牌需要来看看这个UP主眼里的“她困境”

连续三次发布带货视频&#xff0c;但却仍然涨粉3w。 5月16日&#xff0c;时尚区UP主鹦鹉梨在B站发布作品《漫画胸能不能走出现实啊&#xff1f;&#xff1f;&#xff1f;&#xff1f;》&#xff0c;视频中UP主指出现在女性在生活中的一大困境&#xff0c;当下互联网上的审美一…