我在单独的文件discovery.ts
中有一个自定义类,我的代码看起来像这样
import { EventEmitter } from 'events';
class Discovery extends EventEmitter {
let myProperty = 'value';
constructor { super(); }
}
let disc = new Discovery();
export { disc };
现在我有一个代表Electron主要流程的main.ts
文件:
import { app, Tray, Menu, BrowserWindow, ipcMain, screen } from 'electron';
import { disc } from './discovery';
let window: Electron.BrowserWindow = null;
app.on('ready', () => {
////
disc.myProperty = 'new value'; // Changing value here
////
window = new BrowserWindow({width: 800, height: 600});
window.loadURL('file://' + __dirname + '/../html/index.html';);
});
表示Electron的渲染器进程的index.ts
文件(此文件作为脚本从index.html
导入):
import { disc } from './discovery';
console.log(disc.myProperty); // Should print 'new value' but prints 'value'
现在的问题是,我希望Discovery
类在导入'./discovery'
的所有文件中成为同一个对象,但是当我在disc.myProperty
中为main.ts
分配新值时console.log(disc.myProperty)
中的index.ts
仍会打印旧值 - '值'。
根据我的理解,我认为模块只执行一次,因此当您在多个文件中导入对象时,您在每个文件中导入相同的对象,并且该对象的状态在所有文件中都相同。我错了吗?或者这个问题可能与Electron有关吗?