在使用很多exe的时候,都有可能碰到:可以传递特殊参数以定制某项功能的情况。比如各大浏览器一般都有类似的设定。或者命令行里面,常见的mv/cp之类的命令,也都是可以传递参数的。那么,对于使用electron技术生成的程序来说,如何才能获得这些额外传递的参数呢?这就是本文中,苏南大叔所描述的内容。

苏南大叔:electron程序,如何通过process.argv从命令行读取参数? - electron-process-argv
electron程序,如何通过process.argv从命令行读取参数?(图4-1)

本文测试环境:win10/electron@3.0electron-builder打包方式。

标准答案

获取这些参数的方法就是process.argv,但是只有主进程中获取到的process.argv,才包含有外部传递的参数信息。在渲染进程中,同样使用process.argv得到的数据,却得到的其它一系列莫名其妙的东西。所以,对于主进程和渲染进程来说,两者的process并不是同样的一个东西。

注意:从process.argv数组中,根据是否是生产模式,第X个数据开始,才是你所需要的数据。

思路一

所以,思路就是:在主进程中获得这些额外附加参数,如果想在渲染进程中使用的话,就再使用sharedObject进行数据共享。

main.js:

global.sharedObject = { 
    argv: process.argv
}

在渲染进程中,使用下面的方式读取想要的process.argv

var remote = require('electron').remote;
var arguments = remote.getGlobal('sharedObject').argv;
console.log(arguments);

思路二

还可以直接在渲染进程里面通过remote获得process.argv

const remote = require('electron').remote
console.log(remote.process.argv)

相关文章

总结

主进程通过process.argv可以获得目标数据,得到的是个数组,从第三个成员开始,就是所需要的数据。为了在渲染进程中使用process.argv,必须开启nodeIntegration。但是,渲染进程中的process.argv和主进程中的process.argv得到的值,却是不同的值。那么,这样的话,就需要通过sharedObject进行数据共享。

更多苏南大叔的electron经验文章,请点击下面的链接查看:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

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

本站的忠实读者小伙伴,正在阅读下面这些文章: