如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

在您高高兴兴的构建了一个electron的exe后,是不是发现可以多次点开?可以同时存在多个实例?那么本文就是讲述如何在electron开发中,避免打开多个实例的。

前提描述

本文的主体代码来自 https://electron.org.cn/doc/api/app.html,苏南大叔稍稍进行了修改,以适应于 quick-start 这个demo,主要用到了app中SingleInstance方法。执行的是win环境下的exe。

在mac环境下,本文略有不同,正常情况下来说,没有本文的代码,mac下面也会是一个实例。但是,如果没有本文中的代码,在命令行下面多次启动,会是多个实例。

代码展示

下面的代码来自于main.js:

const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow

//...

let mainWindow

function createWindow(){
  mainWindow = new BrowserWindow({width: 800, height: 600})
  mainWindow.loadURL("https://electron.org.cn/")
  mainWindow.on('closed', function () {
    mainWindow = null
  })
}

// 关键代码在这里
const shouldQuit = app.makeSingleInstance((commandLine, workingDirectory) => {
  if (mainWindow) {
    if (mainWindow.isMinimized()) mainWindow.restore()
    mainWindow.focus()
  }
})
if (shouldQuit) {
  app.quit()
}
// 关键代码在这里

app.on('ready', createWindow)
//...

makeSingleInstance函数是整个功能需求的核心。大家仔细看看这里即可。代码很好理解,我就不详细解释了。

如何保证electron只启动一个实例 - main

如何保证electron只启动一个实例(图4-1)

截图展示

下面展示一下相关的效果截图,大家可以对比看看。

使用makeSingleInstance之前的效果截图:

如何保证electron只启动一个实例 - multi

如何保证electron只启动一个实例(图4-2)

使用makeSingleInstance之后的效果截图:

如何保证electron只启动一个实例 - result

如何保证electron只启动一个实例(图4-3)

如何保证electron只启动一个实例 - exe

如何保证electron只启动一个实例(图4-4)

需要说明的是:

  • 本段截图都是多次点击启动之后的截图。
  • 本文中的exe都是经过electron-packager ./打包后的结果。
  • exe在makeSingleInstance的作用下,即使是命令行模式electron ./,也是只开启一个实例的。
  • mac下,即使不加这段makeSingleInstance,也是默认只开启一个实例的。而在命令行下,是可以多次启动同一个dmg的。加上这段makeSingleInstance后,命令行下面,也只能启动一个。

结语

anyway,我们的基本目的通过makeSingleInstance达到了。更多electron的相关资讯,请点击苏南大叔的文章:https://newsn.net/tag/electron/

  【electron】秘籍文章入口,仅传授于有缘之人  electron

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

打赏领取小礼物

打赏任意金额,发送截图到邮箱 shang@newsn.net ,可以领取精选回馈如下(任选其一):
  • 《前端视频教程大礼包》一套
  • 《wordpress精选皮肤》一套
  • 《dedecms织梦精选模板》一套
感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!

岁月静好

关注互联网发展,关注苏南大叔的《程序如此灵动~》博客
本文章来自:程序如此灵动~
博客地址为:https://newsn.net/
原文地址为:https://newsn.net/say/electron-single-instance.html
上一篇好文:electron与jquery不得不说的故事
下一篇好文:electron-quick-start项目目录结构改造并打包

如果您转载了本文章,出于某种原因,并没有注明作者或者出处。
在这里,苏南大叔也表示理解和支持。因为苏南大叔深深地明白:
您会在合适的时机,合适的地方,给本博客一个外链。对吧?
您若开心,便是安好!岁月静好,但愿世界和平,没有纷争~