Javascript 电子:切换URL'时避免闪烁;与';loadURL';

Javascript 电子:切换URL'时避免闪烁;与';loadURL';,javascript,electron,Javascript,Electron,在我的电子应用程序中,我只有一个窗口。在浏览我的应用程序的不同“表单”时,我使用调用mainWindow.loadURL('file://...)-函数。不幸的是,这将导致闪烁效果,因为browserwindow会清除其内容并加载新的HTML文件。这将导致一种非常不民族的感觉。另外,我在实例化窗口时已经选中了“backgroundColor”-选项 mainWindow = new BrowserWindow({ width: 1000, height: 600,

在我的电子应用程序中,我只有一个窗口。在浏览我的应用程序的不同“表单”时,我使用调用
mainWindow.loadURL('file://...)
-函数。不幸的是,这将导致闪烁效果,因为browserwindow会清除其内容并加载新的HTML文件。这将导致一种非常不民族的感觉。另外,我在实例化窗口时已经选中了“
backgroundColor
”-选项

mainWindow = new BrowserWindow({
        width: 1000,
        height: 600,
        backgroundColor: '#2e2c29'});
但这也会失败(在切换URL时,应用程序的背景将始终为白色一秒钟或更长时间)

有没有办法避免这种情况?

我发现有一个加载不同“表单”的有趣示例。repo中的演示通常加载了所有表单,但一次只能查看其中一个表单,具体取决于用户单击的内容


或者,Pluralsight的“电子剧本”课程采用了使用手柄或Jade以及jQuery制作“视图引擎”的方法。其基本思想是每个“表单”是一个把手模板,可以呈现该模板,然后将其附加到index.html中的一个div。结果允许在一个窗口electron应用程序中有多个表单。

这基于其他人已经提到的内容,但在一个非常简单的示例中:

const { app, BrowserWindow} = require('electron');

function createWindow(){
    let newWindow = new BrowserWindow({
        width: 1000,
        height: 600,
        backgroundColor: '#2e2c29'
        show: false
    });

    newWindow.loadURL(`file://${__dirname}/views/index.html`);

    newWindow.once('ready-to-show', function (){
        newWindow.show();
    });

    newWindow.on('closed', function() {
        newWindow = null;
    });
}

app.on('ready', function(){
    createWindow();
});

这是最常见的方法,尽管我相信您可以通过创建新窗口或使用超时功能找到其他方法,直到窗口准备好显示。

这是我遇到的一个问题。但是,随着electron 2.0.0的发布,您现在可以将关联设置为包含所有页面loa这对我自己的CPU使用也有很大帮助,因为它将在一个进程中加载所有这些项目


在URL之间切换时,您希望的行为是什么?可能在内容准备好之前隐藏窗口?请描述类似于初始加载的内容。@JustinEmery是的,它讨论了如何使用
准备显示
事件。我猜他在同一窗口中显示不同的文件,并且必须隐藏窗口d比闪烁更糟糕。也许他希望它在准备就绪时淡入淡出,或者其他什么。这就是为什么我选择SPA路线——在同一个窗口中使用多个文件可能是个坏主意。所以你们这些家伙,在不同的“窗体”中导航一般来说这是个坏主意吗?这是一个小问题,因为我正在开发一个kiosk应用程序。你对如何处理这种情况有其他想法吗?