Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.2k views
in Technique[技术] by (71.8m points)

electron-vue 热更新后 自动跳转应用窗口功能怎么关闭?

使用了 electron-vue 脚手架 应该是自动安装了热更新模块,
导致每次代码编辑到一半 然后自动跳转到最新的应用窗口 每次都要切换很麻烦...有没有 关闭这个跳转应用窗口功能的....求大佬


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

看样子,你应该是编辑器自动保存导致electron更新的,你可以尝试将你的编辑器的自动保存功能关闭, 如果你一定要改程序的话

// .electron-vue/dev-run.js  80行左右
function startMain () {
  return new Promise((resolve, reject) => {
    mainConfig.entry.main = [path.join(__dirname, '../src/main/index.dev.js')].concat(mainConfig.entry.main)

    const compiler = webpack(mainConfig)

    compiler.plugin('watch-run', (compilation, done) => {
      logStats('Main', chalk.white.bold('compiling...'))
      hotMiddleware.publish({ action: 'compiling' })
      done()
    })

    compiler.watch({}, (err, stats) => {
      if (err) {
        console.log(err)
        return
      }

      logStats('Main', stats)

      if (electronProcess && electronProcess.kill) {
        manualRestart = true
        process.kill(electronProcess.pid) // 代码发生变化后,杀死electron进程
        electronProcess = null
        startElectron() // 重新生成一个新的进程

        setTimeout(() => {
          manualRestart = false
        }, 5000)
      }

      resolve()
    })
  })
}

你可以将process.kill(electronProcess.pid)startElectron()方法换为在方法compiler.watch外通过监听ctrl+s或者通过主进程和渲染进程通信,决定你什么时候来刷新主进程,思路就是这么一个思路,你先自己尝试下,有问题可以继续问,如果觉得答案不错,请采纳

================= 分割线 ==================

你可以通过globalShortcut来监控全局的快捷键,通过ctrl+s来保存,但是这么做的话有个缺陷,你高频的ctrl+s(可能只有我喜欢连续点击ctrl+s),会导致部分electron进程杀不死,从而占用大量内存导致系统卡顿,所以你要密切的关注任务管理器

关于杀进程这个,我的处理是

const { exec } = require("child_process");

exec("taskkill /f /im electron.exe", (err) => {
  if (!err) startElectron();
})

点击查看


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...