Tra*_*les 6 javascript build electron
我目前正在开发一款网页游戏,也可以通过电子作为桌面应用程序使用.require('electron')如果我正在构建游戏的网络版本,我不想这样做.
我说我使用.yml文件编译如下:
cmd: browserify {PROJECT_PATH}/js/main.js > {PROJECT_PATH}/js/bundle.js && {PROJECT_PATH}/index.html
name: 'web'
targets:
electron:
cmd: browserify {PROJECT_PATH}/js/main.js > {PROJECT_PATH}/js/bundle.js && electron {PROJECT_PATH}
Run Code Online (Sandbox Code Playgroud)
如果我的构建命令是类似的node main.js true,我可以引用布尔参数,然后在Javascript中使用它require('electron')或不是.但是,鉴于目前的情况,我不确定如何做到这一点.
换句话说,我想通过我的.yml构建文件传递一个布尔参数,并使用所述布尔值,如下所示:
if (passedBoolean) {
const {app, BrowserWindow} = require('electron');
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?如果不可能,那么另一种解决方案是什么?
有多种方法可以解决此问题。首先是询问平台的功能。例如,Electron 设置变量:
process.versions.electron
Run Code Online (Sandbox Code Playgroud)
如果您在浏览器中运行,则不会设置此值,因此您可以检查它是否存在(并且您会知道您正在 Electron 中运行)。这是文档:Electron:Process。
测试嵌套属性可能有点粗糙,因此一种稍微简单的方法是将访问该值的尝试包装在 try/catch 中:
try {
process.versions.electron;
} catch (err) {
console.log('Not electron', err);
}
Run Code Online (Sandbox Code Playgroud)
你甚至可以将它包装成一个很好的函数:
function isPlatformElectron() {
'use strict';
try {
process.versions.electron;
return true;
} catch (err) {
return false;
}
}
if (isPlatformElectron()) {
// Do Electron-specific stuff here
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用原始代码(稍作修改)执行类似的操作:
let app, BrowserWindow;
try {
({app, BrowserWindow} = require('electron'));
} catch (err) {
console.log('Not electron');
}
if (app && BrowserWindow) {
console.log('is electron');
}
Run Code Online (Sandbox Code Playgroud)
我发现这个版本更难阅读,并且更喜欢我上面建议的函数方法,但我认为像原始版本一样使用解构来显示示例可能会很有用(尽管在这种情况下不能使用 const)。
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |