在渲染器中导入与主进程

时间:2017-07-13 19:42:49

标签: node.js typescript electron

我在单独的文件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有关吗?

0 个答案:

没有答案