首页 > 其他分享 >Electron框架使用vue开发跨平台桌面工具应用-后台日志发送到前台和执行导入ZIP

Electron框架使用vue开发跨平台桌面工具应用-后台日志发送到前台和执行导入ZIP

时间:2024-11-18 13:39:59浏览次数:1  
标签:vue const Electron js 跨平台 fs path dirname mainWindow

一、后台日志发送到前台

  1. 首先在preload.js里面注册回调
    image
  2. 因为需要主窗口给vue页面发送,需要把窗口管理起来,不能直接写在backgroud.js里面。需要暴露出来所以编写了windowManager.js
// windowManager.js
let mainWindow = null;

// 设置 mainWindow
export function setMainWindow(window) {
  mainWindow = window;
}

// 获取 mainWindow
export function getMainWindow() {
  return mainWindow;
}

// 发送日志到渲染进程
export function sendLog(message) {
  if (mainWindow) {
    mainWindow.webContents.send('sql-log', message);
  } else {
    console.error('Main window not initialized.');
  }
}

backgroud.js里面引用,并 setMainWindow(win);
3.在vue的js里面调用 sendLog("日志信息")

二、执行导入sql然后删除

  1. 解压不能使用_dirname了而是path(_dirname)获取到运行目录,也可以使用process.execpath获取执行exe所在的目录
 // 解压 ZIP 文件
        const zip = new AdmZip(zipfile);
        //const tempDir = path.join(__dirname, 'temp');
        //sendLog(process.execPath);
        //const tempDir = path.join(path.dirname(process.execPath), 'temp');
        const tempDir = path.join(path.dirname(__dirname), 'temp');
        if (!fs.existsSync(tempDir)) {
          fs.mkdirSync(tempDir);
        }
        zip.extractAllTo(tempDir, true);
  1. 删除函数如下
  async function deleteTempDirectory(dirPath) {
    try {
      const files = fs.readdirSync(dirPath);
      
      // 删除目录中的所有文件
      for (const file of files) {
        const filePath = path.join(dirPath, file);
        const stat = fs.statSync(filePath);
  
        if (stat.isDirectory()) {
          // 如果是目录,递归删除
          await deleteTempDirectory(filePath);
        } else {
          // 如果是文件,直接删除
          fs.unlinkSync(filePath);
        }
      }
  
      // 删除空目录
      fs.rmdirSync(dirPath);
      console.log(`临时文件夹 ${dirPath} 已删除`);
    } catch (error) {
      console.error('删除临时文件夹时发生错误:', error);
    }
  }

标签:vue,const,Electron,js,跨平台,fs,path,dirname,mainWindow
From: https://www.cnblogs.com/lovefoolself/p/18552430

相关文章

  • 基于SpringBoot+Vue的大学生就业信息管理系统的设计与实现(源码+lw+部署+讲解)
    文章目录1.前言2.详细视频演示3.具体实现截图4.技术可行性分析5.技术简介5.1后端框架SpringBoot5.2前端框架Vue5.3系统开发平台6.系统架构设计7.程序操作流程8.业务流程设计9.为什么选择我们9.1自己的公众号9.2海量实战案例10.代码参考11.数据库参考12.源码及文档获取......
  • 基于SpringBoot+Vue的饮食营养管理系统的设计与实现(源码+lw+部署+讲解)
    文章目录1.前言2.详细视频演示3.具体实现截图4.技术可行性分析5.技术简介5.1后端框架SpringBoot5.2前端框架Vue5.3系统开发平台6.系统架构设计7.程序操作流程8.业务流程设计9.为什么选择我们9.1自己的公众号9.2海量实战案例10.代码参考11.数据库参考12.源码及文档获取......
  • 基于SpringBoot+Vue的餐饮连锁店管理系统的设计与实现(源码+lw+部署+讲解)
    文章目录1.前言2.详细视频演示3.具体实现截图4.技术可行性分析5.技术简介5.1后端框架SpringBoot5.2前端框架Vue5.3系统开发平台6.系统架构设计7.程序操作流程8.业务流程设计9.为什么选择我们9.1自己的公众号9.2海量实战案例10.代码参考11.数据库参考12.源码及文档获取......
  • 基于SpringBoot+Vue的网上蛋糕销售系统的设计与实现(源码+lw+部署+讲解)
    文章目录1.前言2.详细视频演示3.具体实现截图4.技术可行性分析5.技术简介5.1后端框架SpringBoot5.2前端框架Vue5.3系统开发平台6.系统架构设计7.程序操作流程8.业务流程设计9.为什么选择我们9.1自己的公众号9.2海量实战案例10.代码参考11.数据库参考12.源码及文档获取......
  • 基于SpringBoot+Vue的心理健康服务系统的设计与实现(源码+lw+部署+讲解)
    文章目录1.前言2.详细视频演示3.具体实现截图4.技术可行性分析5.技术简介5.1后端框架SpringBoot5.2前端框架Vue5.3系统开发平台6.系统架构设计7.程序操作流程8.业务流程设计9.为什么选择我们9.1自己的公众号9.2海量实战案例10.代码参考11.数据库参考12.源码及文档获取......
  • vue2-基础核心
    vue简介vue中文官网动态构建用户界面的渐进式JavaScript框架vue的特点:遵循MVVM模式采用组件化模式,提高代码复用率,让代码更好维护声明式编码,无需直接操作DOM,提高开发效率,编码简洁、体积小,运行效率高本身只关注UI,也可以引入其他三方库开发项目使用虚拟DOM+优秀的Diff算......
  • Go语言跨平台桌面应用开发新纪元:LCL、CEF与Webview全解析
    开篇寄语在Go语言的广阔生态中,桌面应用开发一直是一个备受关注的领域。今天,我将为大家介绍三款基于Go语言的跨平台桌面应用开发框架——LCL、CEF与Webview,它们分别拥有独特的魅力和广泛的应用场景。通过这三款框架,你将能够轻松开发出功能强大、界面美观的跨平台桌面应用程序。......
  • vue3 下拉框自带的模糊查询不准确 el-autocomplete
    一、元素标签写法<el-form-itemlabel="配件名称"prop="materialName"><el-autocompletestyle="width:100%"v-model="form_feiyong.materialName":fetch-suggestions="querySearchVType"clearableplac......
  • vue的观察者模式与发布订阅者模式(简单版)
    最近在背八股,然后看面试题的时候发现对于vue的响应式原理,观察者模式和发布订阅者模式好像都有,但是搞不清楚,所以看了几篇文章之后,根据GPT做了总结(简单版)目录1.观察者模式(ObserverPattern)观察者模式示例:2.发布-订阅模式(Publish-SubscribePattern)发布-订阅模式示例:3.......
  • 【开源免费】基于SpringBoot+Vue.JS房屋租赁系统(JAVA毕业设计)
    本文项目编号T040,文末自助获取源码\color{red}{T040,文末自助获取源码}......