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

做神马网站快速排地推网

做神马网站快速排,地推网,网站备案实名认证,做预算查价格的网站是哪个好开发中遇到Electron自定义窗口的问题 使用VUE3 Electron 开发一个音乐软件,自定义导航栏的放大、缩小和关闭。 其中使用ipcRenderer进行联系Electron,进行放大、缩小和关闭操作。 遇到问题 遇到__dirname is not defined in ES module scope //在V…

开发中遇到Electron自定义窗口的问题

使用VUE3 + Electron 开发一个音乐软件,自定义导航栏的放大、缩小和关闭。

其中使用ipcRenderer进行联系Electron,进行放大、缩小和关闭操作。

遇到问题

遇到__dirname is not defined in ES module scope

//在VUE文件中使用
import  ipcRenderer from 'electron';// 会爆出__dirname is not defined in ES module scope的问题
// 原因是__dirname是commonjs规范的内置变量;esm不会注入这个变量
// 解决:删除package.json中的 type:"moudle"

遇到mainWindow is not Defined 和重置窗口没有变化

// 原因:以下代码放置的位置原因,放在了mainWindow作用域外
// 切换全屏事件
ipcMain.on('toggle-full-screen', function() {if (mainWindow.isMaximized()) {// 之前使用的是 mainWindow.restore();mainWindow.unmaximize();} else {mainWindow.maximize();}
});// 最小化窗口事件
ipcMain.on('minimum', function() {mainWindow.minimize();
});

解决方案

electron.js 设置

electron.js : package.json指定的"main": "electron.js "

const { app,ipcMain , BrowserWindow } = require('electron')
const path = require("path")const createWindow = () => {const mainWindow = new BrowserWindow({width: 1200,height: 700,minWidth: 1200,minHeight: 700,frame: false,transparent: true,resizable: false,webPreferences:{nodeIntegration: true, // 是否允许在页面中使用节点js 通信需要contextIsolation: true, // 不启用上下文隔离 通信需要enableRemoteModule: true, // 允许使用 remote 模块preload:path.join(__dirname, 'preload.js'),}})mainWindow.loadURL("http://localhost:5173/");// 下面两个事件需要在createWindow内,在外面会报mainWindow is not definedipcMain.on('toggle-full-screen', function() {  // 切换全屏事件if (mainWindow.isMaximized()) {mainWindow.unmaximize();} else {mainWindow.maximize();}});ipcMain.on('minimum', function() {  // 最小化窗口事件mainWindow.minimize();});
}app.whenReady().then(() => { // 在应用准备就绪时调用函数createWindow()
})
ipcMain.on('closeProgram', () => { // 关闭程序app.quit();
});

新建 preload.js

const { contextBridge, ipcRenderer } = require('electron')contextBridge.exposeInMainWorld('ipcRenderer', {send: (channel, data) => {let validChannels = ['toggle-full-screen','minimum','closeProgram'] // 配置合法消息名if (validChannels.includes(channel)) {ipcRenderer.send(channel, data)}},receive: (channel, func) => {let validChannels = ['toggle-full-screen','minimum','closeProgram']// 配置合法监听事件名称if (validChannels.includes(channel)) {ipcRenderer.on(channel, (event, ...args) => func(...args))}}
})alert('1')//没弹窗就是失败了 成功后删除

VUE文件中使用

<script>
export default {methods: {minimizeWin(){ // 通知主进程我要进行窗口最小化操作window.ipcRenderer.send('minimum','');// console.log('minimizeWin');},maximizeWin(){  // 通知主进程我要进行窗口最大化操作window.ipcRenderer.send('toggle-full-screen','');// console.log('maximizeWin');},closeWin(){  // 通知主进程我要进行窗口关闭操作//返回一个所有已经打开了窗口的对象数组window.ipcRenderer.send('closeProgram','');// console.log('closeWin');}}
}
</script><template><el-row class="row-head" ><!-- 最小化 --><el-button type="button" class="btn btn-primary" id="minimizeWin" @click="minimizeWin"   style="height: 40px; width: 20%;"></el-button><!-- 最大化 --><el-button type="button" class="btn btn-primary" id="maximizeWin" @click="maximizeWin"  style="height: 40px; width: 20%;"></el-button><!-- 关闭 --><el-button type="button" class="" id="closeWin" @click="closeWin"  style="height: 40px;width: 20%;"></el-button></el-row>
</template>

参考

vite+vue3+electron踩坑记录ipcRenderer通信,vue-router打包白屏问题

http://www.ds6.com.cn/news/77355.html

相关文章:

  • 邢台建设网站企业网站建设公司
  • 织梦 去掉我的网站网站权重怎么提高
  • 长沙教育类网站建设谷歌google play官网下载
  • 西青做网站的公司百度推广登陆后台
  • 郑州哪家公司做网站好海淀网站建设公司
  • 宝安有效的网站制作网站优化公司排名
  • 设计建设网站哪家好最新国内新闻事件今天
  • ps做网站视图大小网站目录结构
  • 济宁网站建设公司电话seo营销技巧培训班
  • 浦东新区网站推广公司网站定制的公司
  • wordpress百宝箱软件优化大师客服
  • 外包网站开发 收费今日国内重大新闻
  • 学生网站建设实训总结日本比分算1:1
  • python代码网站品牌策划方案案例
  • 做网站的标签及属性网址查询服务中心
  • 亳州做网站的公司seo赚钱培训
  • 做网站公司实习日记关键词推广价格
  • 佛山专注网站制作细节杭州seo按天计费
  • 做网站需要学会写代码吗中文域名
  • 苏州网站建设在哪里网站建设优化推广系统
  • 童装 技术支持 东莞网站建设百度指数数据分析平台官网
  • 网站建设官网免费模板网站推广营销
  • 石家庄做网站优化semiconductor是什么意思
  • 建设网站费用记什么科目搜狗网站提交入口
  • 商城网站建设分为几块专业网络推广公司
  • 域名停靠网站下载大全免费功能neotv
  • 织梦网站底端的怎么删除百度助手安卓版下载
  • 前端框架模板搜索优化推广公司
  • 哪有网站建设明细报价表品牌推广策划方案
  • 外墙清洗搜狗搜索引擎优化论文