Javascript 在一个电子应用程序中,多个窗口之间共享什么?

Javascript 在一个电子应用程序中,多个窗口之间共享什么?,javascript,electron,Javascript,Electron,我有一个电子应用程序,作为一个单一的应用程序工作良好。我使用pubsub-js将来自组件的消息推送到UI的其他部分来处理,而无需紧密耦合。我使用一个MVVM框架,所以我使用这个事件系统在视图组件之间进行通信,它们之间没有相互链接,我确实对一些电子消息使用IPC事件,但通常我只对低级事件使用IPC事件,对视图级事件使用pubsub,只对要侦听的视图组件使用 现在,当我想要支持多个窗口时,问题似乎出现了,例如,如果我尝试在窗口1上保存,它似乎实际在窗口2上运行保存,以及来自窗口1的通知在窗口2上结束

我有一个电子应用程序,作为一个单一的应用程序工作良好。我使用pubsub-js将来自组件的消息推送到UI的其他部分来处理,而无需紧密耦合。我使用一个MVVM框架,所以我使用这个事件系统在视图组件之间进行通信,它们之间没有相互链接,我确实对一些电子消息使用IPC事件,但通常我只对低级事件使用IPC事件,对视图级事件使用pubsub,只对要侦听的视图组件使用

现在,当我想要支持多个窗口时,问题似乎出现了,例如,如果我尝试在窗口1上保存,它似乎实际在窗口2上运行保存,以及来自窗口1的通知在窗口2上结束,因此它似乎在应用程序之间共享某种状态

另外一个我刚刚注意到的问题是,如果我从窗口1创建窗口2,然后关闭窗口2,那么窗口1中的本机菜单栏将停止运行,并抛出异常


那么,多个电子窗口之间究竟共享了什么?隔离这种行为的最佳实践是什么

我一直认为,除了创建这些窗口的主进程之外,窗口之间没有任何共享,这是我没有预料到的。所以我总是使用ipc模块在windows之间建立通信目前我不希望在windows之间进行任何通信,我希望它们都是隔离的,但默认情况下它们共享同一个节点实例,尽管很难说。您使用的是哪个MVVM框架?我假设全局上下文(
窗口
)对于每个浏览器窗口都是唯一的,这可能会给您带来问题。我使用的是敲除,但这不是特定的问题,例如,如果窗口1创建了窗口2,然后关闭窗口2,则窗口1中的菜单栏将不再起作用。因此,问题似乎在于电子在幕后做了一些我没有预料到的事情。