多窗口的电子最佳方式

时间:2016-08-22 10:34:38

标签: electron

打开多个BrowserWindows的正确方法是什么?我这样做,到目前为止工作正常。最好是赢得一系列胜利?

let win;

function createWindow () {
  for (i=0; i<loadNotes.notes.length; i++){
  win = new BrowserWindow({
    'x': loadNotes.notes[i].pos.x,
    'y': loadNotes.notes[i].pos.y,
    'width': loadNotes.notes[i].pos.width,
    'height': loadNotes.notes[i].pos.height,
    'frame': false});

  win.setMenu(null);
  win.loadURL(`file://${__dirname}/index.html?${loadNotes.notes[i].name}`);
  //win.webContents.openDevTools()
  }
  win.on('close', () => {

  })

  win.on('closed', () => {
    win = null
  });
}

2 个答案:

答案 0 :(得分:4)

这取决于您是否要使用win的实例方法。如果没有,您可以保留您的代码。 只有一个建议,建议您为了获得最佳用户体验,优雅地展示您的窗户

win = new BrowserWindow({
    ...., 
    show: false})
...
win.loadURL(`file://${__dirname}/index.html?${loadNotes.notes[i].name}`)
win.once('ready-to-show', () => {
  win.show()
})

答案 1 :(得分:3)

用于在电子中创建多窗口应用程序很容易。这里有一个nodejs模块,可以帮助您轻松创建多窗口应用程序。

只需执行以下命令即可安装此模块

npm install --save electron-window-manager

然后,在应用程序main.js(或您为应用程序选择的任何内容)中,需要模块,如下所示:

var windowManager = require('electron-window-manager');

在主要流程上,您可以像这样使用它:

const electron = require('electron');
const app = electron.app;
const windowManager = require('electron-window-manager');

// When the application is ready
app.on('ready', function(){
    windowManager.init( ... );
    // Open a window
    windowManager.open('home', 'Welcome ...', '/home.html');
});

在渲染器过程中(在创建的窗口内),您可以像这样使用它:

    var remote = require('remote');
    var windowManager = remote.require('electron-window-manager');

    // Create a new window
    var win2 = windowManager.createNew('win2', 'Windows #2');
    win2.loadURL('/win2.html');
    win2.onReady( ... );
    win2.open();

请继续查看模块代码并亲自了解它是如何工作的,没有任何魔法,但它一致且易于阅读。只需查看代码,就可以了。

这里有一个关于这个模块的完整指南,我希望它会有所帮助

https://github.com/TamkeenLMS/electron-window-manager