电子浏览器查看呈现器进程与WebView [英] Electron BrowserView Renderer process vs WebView

查看:0
本文介绍了电子浏览器查看呈现器进程与WebView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我对呈现器进程和BrowserView有点困惑。

使用新方法,我只需将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>不同,BrowserView不使用其他呈现器进程。您可以通过观察在运行一些基本代码时出现的进程数来验证这一点:

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

您将不会获得额外的呈现器进程。

我没有将页面加载到BrowserWindow中有关系吗?

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

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

您是否在询问空BrowserWindow是否会导致冗余的渲染器进程中包含"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上并偶尔隐藏BrowserView以显示它们,是否会出现"透支"问题?

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

这篇关于电子浏览器查看呈现器进程与WebView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆