阅读 754

Electron系列文章-启动参数

程序启动参数

当你的应用启动时,你可能需要同时带上一些参数来影响程序的执行逻辑。比如,通过设置启动参数,来让程序换不同的皮肤。

以windows系统为例,在windows的exe上右键属性,可以看到如下界面

在目标一栏,是程序exe的路径,我们可以在这个路径后面加入特殊的参数来满足我们的需求。

"C:\Program Files (x86)\Tencent\WeChat\WeChat.exe" --args theme=dark

我们在路径上加入了theme的参数,值为dark,应用启动时读取这个参数,可以以dark的主题来显示界面。在Electron开发的程序中,如何实现这样的功能呢?

其实原理很简单,我们都知道Electron的主进程其实就是个node进程,所以可以直接通过node支持的方式去获取启动参数。在以往用node实现web server的时候,我们会通过传入 --worker=2 的形式来配置worker数量,然后使用process.argv来获取。同理,在electron中也可以这么干。

//主进程 main.js
const { app, BrowserWindow } = require('electron');
console.log(process.argv);
复制代码

上面代码的输出结果为下图

可以看到,在主进程中获取到启动参数其实很简单。那渲染进程又该如何获取呢?这就回到了上一章讲到的主进程和渲染进程间如何通信的问题了,比如你可以直接这么写

//渲染进程 renderer.js
const remote = require('electron').remote
alert(remote.process.argv)
复制代码

更多的方法可以参考上一章的讲解来实现。

chrome命令行开关

除了Electron本身启动的参数之外,还有一个重要的启动参数开关就是chrome浏览器本身的。Electron通过集成chrome来实现窗口,所以每个窗口本质上都是一个chrome浏览器进程。在chrome浏览器中,有很多的特性出于安全考虑或者是还在实验阶段,是没有默认开放的,需要人为的通过命令行参数去打开。比如我们可以在chrome.exe后面加--remote-debugging-port=port来指定端口开启远程调试。

在electron中同样也是支持这样的功能的,如果你有特殊的需求,可以通过下面的方式开启你想要的特性

//主进程 main.js
const { app } = require('electron')
app.commandLine.appendSwitch('remote-debugging-port', '8315')
app.commandLine.appendSwitch('--disable-http-cache
','true')

app.on('ready', () => {
  // 你的代码
})
复制代码