node.js - 窗口值未定义 - Electron js

标签 node.js electron

我正在创建一个 Electron 应用程序,并试图找到将代码拆分为不同模块以实现可维护性的方法。我有我的 main.js 文件,还有另一个我为操作窗口创建的文件 (windowManipulation.js)。该文件具有创建窗口所需的所有变量和函数,并且该部分正在工作。

let window 1;
let window 2;

module.exports.createWindow1 = () => {
 window1 = new BrowserWindow({...})
}
...

在 main.js 我有:
const windowManipulation = require("./windowManipulation.js");
...

我能够很好地创建窗口;但是,创建窗口后,我无法使用 Javascript 关闭它们,因为窗口变量的值是“未定义”。我认为这是因为变量名在 windowManipulation.js 文件中,而不是在 main.js 文件中,这意味着窗口创建得很好,但是我失去了对它们的所有引用。

解决这个问题的最佳方法是什么?我可以将 windowManipulation.js 文件中的所有代码移动到 main.js 文件,但这会破坏创建模块以使代码更易于维护的目的。您如何处理 ElectronJS 应用程序中的窗口,以便您仍然可以拥有一些模块化?

最佳答案

这就是我决定解决它的方法。我将窗口定义放在 main.js 文件中,然后在该文件中创建一个函数,该函数调用该函数在 windowManipulation 文件中创建窗口。该文件返回实际的窗口。

main.js

...
const openWindow = require("./pathToFile")

let window1;
...
module.exports.createWindow1 = () => {
     window1 = openWindow.openWindow1();
}

windowManipulation.js
...
module.exports.openWindow1 = () => {
     let window1 = new BrowserWindow({
          ...
     })

     return(window1)
}
...

现在,如果我想操作 window1,我可以从我的 main.js 轻松完成。

我希望这可以帮助别人。

关于node.js - 窗口值未定义 - Electron js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61140743/

相关文章:

javascript - 在 Electron 中将 HTMLtable 导出为 CSV

在 Windows 上安装更新时,Electron 自动更新失败

javascript - 找不到模块 : can't resolve '../file'

javascript - Js函数不能与node和browserify一起使用

javascript - 我们可以在服务器的 Node 模块中提供静态文件吗?

javascript - JavaScript 中的条件链函数

javascript - react-router v4 - browserHistory 未定义

node.js - 为什么后续的 HTTP 请求

javascript - 无法调用 Parse.Promise._continueWhile

javascript - 有没有办法在多个 Electron 主进程之间进行通信?