电子浏览器查看呈现器进程与WebView [英] Electron BrowserView Renderer process vs WebView
本文介绍了电子浏览器查看呈现器进程与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
}
};
- 这是什么呈现器进程?它是
webviews
曾经使用的传统渲染过程吗?或者BrowserViews
有自己的呈现器进程?- 如果是传统的方式,在
BrowserWindow
中也加载页面的情况下会共享吗?
- 如果是传统的方式,在
- 我没有将页面加载到
BrowserWindow
重要吗?我的意思是,如果我不在BrowserWindow
中加载页面(只需创建窗口以向其附加BrowserView
),是否有其他Chromium进程运行空页面?- 如果是,如果我只对
BrowserView
感兴趣,是否可以防止这种情况?
- 如果是,如果我只对
- 如果我将内容保留在
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屋!
查看全文