【问题标题】:Electron BrowserView Renderer process vs WebViewElectron BrowserView 渲染器进程与 WebView
【发布时间】:2019-10-27 12:56:51
【问题描述】:

我正在将一个 Electron 应用程序从传统的渲染器 + webview 架构移植到使用 BrowserView 对象的应用程序。该应用程序使用一些BrowserWindows 在所有可用监视器中显示webview 全屏。渲染器进程基本上保持 index.htmlwebview 大小为 100%。

我对渲染器进程和 BrowserViews 有点困惑。

使用新方法,我只是将preload 脚本注入到BrowserView 构造函数中,而不会在BrowserWindow 本身上加载任何页面:

browserViewOptions = {
    webPreferences: {
        preload: (__dirname + "/preload.js"),
        partition: "persist:ns",
        nodeIntegration: false,
        plugins: false
    }
};
  1. 这是什么渲染器进程?这是webviews 曾经的传统渲染过程吗?还是BrowserViews 有自己的渲染器进程?
    1. 如果是传统方式,我在BrowserWindow也加载页面的情况下是否共享?
  2. 我没有将页面加载到BrowserWindow 是否重要?我的意思是,如果我没有在BrowserWindow 中加载页面(只是创建一个窗口以将BrowserView 附加到它),是否还有另一个运行空页面的 Chromium 进程
    1. 如果是,如果我只对BrowserView 感兴趣,可以防止这种情况发生吗?
  3. 如果我在 BrowserWindow 上保留内容并偶尔隐藏 BrowserViews 以显示它们,是否存在“过度绘制”问题?

【问题讨论】:

    标签: webview electron chromium


    【解决方案1】:

    这是什么渲染器进程?

    <webview> 不同,BrowserView 不使用其他渲染器进程。您可以通过观察运行一些基本代码时出现的进程数来验证这一点:

    const mainWindow = new BrowserWindow();
    const view = new BrowserView();
    view.webContents.loadFile("index.html");
    mainWindow.setBrowserView(view);
    

    您不会获得额外的渲染器进程。

    我没有将页面加载到 BrowserWindow 中是否重要?

    到底有什么不同?渲染器进程的数量?不,它没有。

    是否还有另一个运行空页面的 Chromium 进程?如果是,如果我只对 BrowserView 感兴趣,可以防止这种情况发生吗?

    您是否在问空的BrowserWindow 是否会导致包含“about:blank”的冗余渲染器进程?它不会导致额外的过程,但是是的,我相信该窗口已隐式导航到 about:blank。 (不过我可能错了,因为mainWindow.webContents.getURL() 记录""。明确地将其导航到"about:blank" 正确记录"about:blank")。

    你真的不需要阻止任何事情。

    但是,我要补充一点,如果您的整个窗口要加载单个 BrowserView 并关闭节点集成,据我所知,您不会从使用 BrowserView 中获得任何好处,并且应该只需执行以下操作:

    const mainWindow = new BrowserWindow({
        webPreferences: {
            preload: (__dirname + "/preload.js"),
            partition: "persist:ns",
            nodeIntegration: false,
            plugins: false
        }
    });
    

    如果我在 BrowserWindow 上保留内容并偶尔隐藏 BrowserViews 以显示它们,是否存在“过度绘制”问题?

    您可能需要澄清您的问题是什么,但加载到BrowserWindow 中的内容将始终存在,并且会在隐藏BrowserView 时出现。

    【讨论】:

      猜你喜欢
      • 2018-01-05
      • 2017-05-01
      • 2017-06-01
      • 2018-05-29
      • 2019-03-21
      • 2017-10-14
      • 2017-11-14
      • 2020-04-09
      • 2021-06-04
      相关资源
      最近更新 更多