T M*_*ack 2 html javascript node.js electron
renderer.js
ipcRenderer.sendSync('setGlobal', 'globalVarName').varInner.varInner2 = 'result';
Run Code Online (Sandbox Code Playgroud)
main.js
global.globalVarName = {
varInner: {
varInner2: ''
},
iWontChange: 'hi'
};
ipcMain.on('setGlobal', (event, arg) => {
console.log(arg) // should print "result"
// what goes here?
})
console.log(varInner2) // should print "result"
Run Code Online (Sandbox Code Playgroud)
是这样的可能,即设置varInner2的globalVarName这种方式?其次,有没有一种方法可以优化此过程,这样我们就不必为每个全局变量重写此过程(即使用动态变量名称执行此操作的某种方法)?
感谢您提出任何想法或解决方案,如果这是一个常识性问题,我们深表歉意。
getGlobal当您仅对读取全局变量的值感兴趣时,使用效果很好。但是,我发现尝试分配或更改其使用的值getGlobal是有问题的。
就我而言,我发现Main进程上的全局变量并没有实际更改。具体来说,当刷新开发中的Electron窗口时,全局变量将重新设置为其原始值。这使得恢复开发状态成为一个问题。
不知道这是否还会在生产中发生,但我想会发生,因此,依赖于全局变量的最新值来拆分新流程将是有问题的。
相反,我最终使用了ipcMain和的更详细的方法ipcRenderer。
main.js
const { ipcMain } = require( "electron" );
ipcMain.on( "setMyGlobalVariable", ( event, myGlobalVariableValue ) => {
global.myGlobalVariable = myGlobalVariableValue;
} );
Run Code Online (Sandbox Code Playgroud)
renderer.js
const { ipcRenderer, remote } = require( "electron" );
// Set MyGlobalVariable.
ipcRenderer.send( "setMyGlobalVariable", "Hi There!" );
// Read MyGlobalVariable.
remote.getGlobal( "MyGlobalVariable" ); // => "Hi There!"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4965 次 |
| 最近记录: |