electron v30版引入 WebContentsView

2,226 阅读1分钟

electron v30 版的变化:

  • 主进程模块引入了几个新类: BaseWindow, WebContentsView, View.
  • 标注BrowserView废弃
  • BrowserWindow里面跟BrowserView相关的几个方法标注为废弃

WebContentsView的介绍:

WebContentsView 在 2022 年维护者峰会回顾 | Electron介绍,当时最新发布版本为v21, 经历了一年半, 直到v30版本才正式发布,是对chromeWebContentsView适配,引用文章里的原话它是一个大型重构,消除了许多底层代码,简化了 Chromium 升级并减少主要版本之间出现新错误的风险; 计划将现有的 BrowserView 类变成一个 WebContentsView 的垫片(shim),以便在您过渡到较新的 API 时提供一个缓冲。

  • 可用来加载页面,结合BaseWindow可嵌入多个WebContentsView,实现单窗口管理多页面
  • 功能和已有的BrowserView等同, 但是不能直接在BrowserWnidow中当成BrowserView的替代, 即BrowserView只能结合BrowserWindow使用, WebContentsView只能结合BaseWindow使用

BaseWindow的用途:

  • BaseWindow相较于BrowserWindow来说, 没有直接加载页面的方法,没有webContents属性
  • BaseWindow只是用来承载WebContentsView的容器, 相较于BrowserWindow多一个contentView属性,该属性类型为View
  • BaseWindow通过contentView, 可引入一个或多个WebContentsView加载页面, 实现单窗口管理多页面

BaseWindow + WebContentsView 替换 BrowserWindow + BrowserView

v30之前, 可以通过BrowserWindowaddBrowserView方法,加载多个BrowserView, 实现跟BaseWindow类似的单窗口管理多页面. 目前没发现在单窗口管理多页面时, 必须用BaseWindow + WebContentsView替换BrowserWindow + BrowserView的好处.