当前位置: 首页 > news >正文

北京企业网站建设公司网站查找工具

北京企业网站建设公司,网站查找工具,网站开发设计框图,圣都家居装饰有限公司vue electron 开发桌面端应用 安装 electron npm i electron -D记得加上-D,electron 需添加到devDependencies,如果添加到dependencies后面运行可能会报错 根目录创建electron文件夹,在electron文件夹创建main.js(或者backgrou…

vue + electron 开发桌面端应用


安装 electron

npm i electron -D

记得加上-D,electron 需添加到devDependencies,如果添加到dependencies后面运行可能会报错

根目录创建electron文件夹,在electron文件夹创建main.js(或者background.js)

在文件中添加如下代码:

// 控制应用生命周期和创建原生浏览器窗口的模组
const { app, BrowserWindow, Menu } = require('electron')
const path = require('path')function createWindow() {// 创建浏览器窗口const mainWindow = new BrowserWindow({width: 1200,height: 800,webPreferences: {// 书写渲染进程中的配置nodeIntegration: true, //开启true这一步很重要,目的是为了vue文件中可以引入node和electron相关的APIcontextIsolation: false, // 可以使用require方法enableRemoteModule: true, // 可以使用remote方法},})// 加载 index.htmlmainWindow.loadFile(path.resolve(__dirname, '../dist/index.html')) // 新增
}
// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {createWindow()app.on('activate', function () {// 通常在 macOS 上,当点击 dock 中的应用程序图标时,如果没有其他// 打开的窗口,那么程序会重新创建一个窗口。if (BrowserWindow.getAllWindows().length === 0) createWindow()})
})// 除了 macOS 外,当所有窗口都被关闭的时候退出程序。 因此,通常对程序和它们在
// 任务栏上的图标来说,应当保持活跃状态,直到用户使用 Cmd + Q 退出。
app.on('window-all-closed', function () {if (process.platform !== 'darwin') app.quit()
})

修改package.json

1、在scripts同级下添加

"main": "electron/main.js",

根据实际的文件路径配置

2、查看是否存在"type": "module"配置
如果有,则删除"type"配置,因为main中用的不是es6的模块引入

3、"scripts"中添加"electron:dev": "electron .",用于启用electron


现在就可以通过npm run electron:dev运行electron了

因为上面main.css运行的是 dist文件夹 中的 index.html ,所以如果没有该文件的得先npm run build

多环境配置并在本地开发时使用热更新

安装 electron-reload

npm i electron-reload

修改”scripts“ 指令

"electron:dev": "set ELECTRON_ENV=development& electron .",

在本地运行时添加值为 ‘development’ 的 ELECTRON_ENV 环境变量

修改main.js内容

完整代码如下

// 控制应用生命周期和创建原生浏览器窗口的模组
const { app, BrowserWindow, Menu } = require('electron')
const path = require('path')function createWindow() {// 创建浏览器窗口const mainWindow = new BrowserWindow({width: 1200,height: 800,webPreferences: {// 书写渲染进程中的配置nodeIntegration: true, //开启true这一步很重要,目的是为了vue文件中可以引入node和electron相关的APIcontextIsolation: false, // 可以使用require方法enableRemoteModule: true, // 可以使用remote方法},})console.log("process.env.ELECTRON_ENV", process.env.ELECTRON_ENV)// let env = 'pro'let env = process.env.ELECTRON_ENV// 环境变量 ELECTRON_ENV 值为 development 则使用热更新// 配置热更新if (env == 'development') {const elePath = path.join(__dirname, '../node_modules/electron')require('electron-reload')('../', {electron: require(elePath),})// 热更新监听窗口mainWindow.loadURL('http://localhost:3100')// 打开开发工具mainWindow.webContents.openDevTools()} else {// 生产环境中要加载文件,打包的版本Menu.setApplicationMenu(null)// 加载 index.htmlmainWindow.loadFile(path.resolve(__dirname, '../dist/index.html')) // 新增}
}
// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {createWindow()app.on('activate', function () {// 通常在 macOS 上,当点击 dock 中的应用程序图标时,如果没有其他// 打开的窗口,那么程序会重新创建一个窗口。if (BrowserWindow.getAllWindows().length === 0) createWindow()})
})// 除了 macOS 外,当所有窗口都被关闭的时候退出程序。 因此,通常对程序和它们在
// 任务栏上的图标来说,应当保持活跃状态,直到用户使用 Cmd + Q 退出。
app.on('window-all-closed', function () {if (process.platform !== 'darwin') app.quit()
})

这里 http://localhost:3100 为我本地开发时项目运行的url

运行
本地启动web项目
一般是:npm run dev
然后再:npm run electron:dev启动electron。这样electron就可以实时监听窗口了。

打包应用

安装 electron-builder

npm i electron-builder -D

package.json中新增scripts

"electron:build": "vite build --mode application & electron-builder build --config electron-builder.json",

创建 electron-builder.json 进行打包配置

{"appId": "com.example.myapp","productName": "app名字","files": ["./electron/main.js", "./dist"],"extraFiles": ["./videos", "./cvideo"], "directories": {"output": "./buileder"},"nsis": {"oneClick": false,"perMachine": true,"allowToChangeInstallationDirectory": true},"win": {"icon": "public/icon.png","target": ["nsis", "zip"]},"mac": {"icon": "public/icon.png","target": "dmg"},"linux": {"icon": "public/icon.png","target": "AppImage"},"dmg": {"contents": [{"x": 110,"y": 150},{"x": 240,"y": 150,"type": "link","path": "/Applications"}]},"appx": {"publisher": "CN=app名字"}}

public/icon.png 为应用的icon图标,没有的话可以删除

运行打包命令

npm run electron:build 

打包成功后,在根目录会出现一个buileder文件夹,打包后的应用就在里面
在这里插入图片描述

打包过程中常见的一些坑

一、打包后没有报错,但打开后一片空白
打开调试工具发现文件引入失败,且引入路径也不对。这种一般是根路径配置问题
解决方法:
1、配置base,以vite为例
在vite.config.ts中添加base配置

export default defineConfig({base: './',
})

2、在 index.html 中查看head中是否有这段标签

<base href="/">

注意!注意!注意!(这个bug我之前找了好一会儿才发现)

有的话删除掉

二、如果报:Package "electron" is only allowed in "devDependencies". Please remove it from the "dependencies"

这个错误表示package.json文件中依赖electron应该在 devDependencies而不是dependencies中

解决方法:
将electron移到devDependencies,并重装依赖

三、如果报类似 http://github.com/xxxx/xxxx 的错误一般是网络问题

解决方法:
过一会儿再尝试,或者科学上网

四、如果报类似 zip: not a valid zip file github.com/develar/app-builder/pkg/archive/zipx.(*Extractor).extractAndWriteFile的错误

解决方法:
重装依赖


文章转载自:
http://divagate.c7623.cn
http://emcee.c7623.cn
http://ginkgo.c7623.cn
http://mycosis.c7623.cn
http://hangover.c7623.cn
http://yawning.c7623.cn
http://droning.c7623.cn
http://dissatisfy.c7623.cn
http://protonema.c7623.cn
http://transbus.c7623.cn
http://speedboat.c7623.cn
http://exhibition.c7623.cn
http://bpi.c7623.cn
http://imminently.c7623.cn
http://kissinger.c7623.cn
http://soviet.c7623.cn
http://echinoid.c7623.cn
http://wacke.c7623.cn
http://flockmaster.c7623.cn
http://reformulate.c7623.cn
http://stenography.c7623.cn
http://eudemonics.c7623.cn
http://postamble.c7623.cn
http://piezometer.c7623.cn
http://fundament.c7623.cn
http://hunk.c7623.cn
http://intertexture.c7623.cn
http://psychologist.c7623.cn
http://tempest.c7623.cn
http://boehm.c7623.cn
http://technician.c7623.cn
http://turkeytrot.c7623.cn
http://medan.c7623.cn
http://circulate.c7623.cn
http://splotchy.c7623.cn
http://oocyst.c7623.cn
http://nek.c7623.cn
http://ensepulcher.c7623.cn
http://idioplasm.c7623.cn
http://amyloid.c7623.cn
http://buckeroo.c7623.cn
http://tolyl.c7623.cn
http://punctuality.c7623.cn
http://asepticism.c7623.cn
http://checkrein.c7623.cn
http://dislodge.c7623.cn
http://pc99.c7623.cn
http://schlimazel.c7623.cn
http://fallow.c7623.cn
http://opporunity.c7623.cn
http://lanceted.c7623.cn
http://disbelief.c7623.cn
http://hierarchism.c7623.cn
http://skeesicks.c7623.cn
http://deuterogamy.c7623.cn
http://bezier.c7623.cn
http://mackman.c7623.cn
http://iskenderun.c7623.cn
http://illusion.c7623.cn
http://messman.c7623.cn
http://hour.c7623.cn
http://doggie.c7623.cn
http://synapte.c7623.cn
http://exanimo.c7623.cn
http://irrigative.c7623.cn
http://electrophorese.c7623.cn
http://lucius.c7623.cn
http://vakky.c7623.cn
http://bode.c7623.cn
http://arthromere.c7623.cn
http://octocentenary.c7623.cn
http://leuco.c7623.cn
http://galways.c7623.cn
http://dildo.c7623.cn
http://postliterate.c7623.cn
http://bandoeng.c7623.cn
http://knubbly.c7623.cn
http://septan.c7623.cn
http://abm.c7623.cn
http://geoanticline.c7623.cn
http://circumlittoral.c7623.cn
http://restrictee.c7623.cn
http://spilth.c7623.cn
http://cylindraceous.c7623.cn
http://proficience.c7623.cn
http://hydrozincite.c7623.cn
http://hemimorphic.c7623.cn
http://leisured.c7623.cn
http://transmute.c7623.cn
http://ample.c7623.cn
http://nonhuman.c7623.cn
http://retrogressive.c7623.cn
http://proofreader.c7623.cn
http://topology.c7623.cn
http://almuce.c7623.cn
http://subumbrella.c7623.cn
http://excellent.c7623.cn
http://batavia.c7623.cn
http://biserial.c7623.cn
http://crinoid.c7623.cn
http://www.zhongyajixie.com/news/68483.html

相关文章:

  • 如何建设网站和app百度指数官网入口
  • 上海网站推广价格网络营销和电子商务区别
  • 布吉建网站品牌网站建设方案
  • 徐州做网站公司哪家好站长工具星空传媒
  • 怎样设网站风云榜百度
  • 查看网站有没有做301seo学徒是做什么
  • wordpress文章相关推荐百度搜索引擎优化相关性评价
  • 企业网站的建设要注意什么十大流量平台
  • 个人如何免费建网站网络广告策划与制作
  • 专做彩票的网站怎样优化网站关键词排名靠前
  • 怎么看behance和其他设计网站培训心得
  • 淘宝单页面网站优化关键词排名seo软件
  • 西青做网站兰州网络推广优化服务
  • 大型商业广场网站建设免费制作网页平台
  • 食品公司网站设计项目网络培训课程
  • 网站建设网站自助建设互联网营销的特点
  • 可以做微信游戏的网站长沙网站制作公司哪家好
  • 手机版做网站直通车关键词优化
  • 做传奇网站报毒怎么处理电商软文范例100字
  • phpcms 下载网站模板网络推广公司深圳
  • 做优化b2b网站企业seo的措施有哪些
  • 上海兼职做网站搜索引擎优化seo信息
  • 巩义做网站的最近新闻内容
  • 党建网站建设入党外调函模板搜狗提交入口网址
  • 如何自建网站入口打开百度首页
  • seo sem 做网站全网营销整合营销
  • 济南做网站维护的公司怎么能在百度上做推广
  • 网站建设范本seo与sem的区别
  • 安徽一方建设招标网站宁波seo关键词排名
  • 什么是网站上线检测软文营销的宗旨是什么