WebView2简介
The Microsoft Edge WebView2 control allows you to embed web technologies (HTML, CSS, and JavaScript) in your native apps. The WebView2 control uses Microsoft Edge as the rendering engine to display the web content in native apps. With WebView2, you can embed web code in different parts of your native app, or build all of the native app within a single WebView instance.
简单说来,WebView2 就是在 windows(mac,linux在计划中)平台使用的WebView,可以嵌到 windows 原生应用中,以Hybrid的方式快速开发桌面应用。
WebView2 和 Electron 的相似点
- Electron 和 WebView2 都是基于 Chromium(Edge) 源代码构建,页面渲染性能相近。
- Electron 和 WebView2 都是多进程模型架构(单个主进程+多个渲染进程)。 架构模型图:
WebView2 和 Electron 的差异点
-
WebView2 可以使用共享 DLLs(Shares Edge/Chrome DLLs) ,不用每一个应用都套一个 Chromium 内核,安装体积小很多,同时一些共享数据(例如只会在非渲染进程中使用的共享设置数据)只会存在一份,硬盘占用较小。
-
WebView2 可选系统共享的运行时打包发布,运行时作为应用单独更新,和安卓端 WebView 类似。Electron 想要更新底层的 NodeJs 或者 Chromium 版本,则整个软件包需要全量更新。
-
WebView2 目前只支持 windows 平台,包括win7。
-
WebView2 需要 JSBridge 来和原生系统交互,Electron 自带 NodeJs 与原生系统交互。
-
WebView2 运行时必为沙盒环境,Electron 可选沙盒。
-
IPC性能存在差异。WebView2 使用 JSbridge 交换数据时需要序列化和反序列化,有一定性能成本。Electron 多进程间使用 MessagePorts API 传递数据,只需拷贝数据即可,避免序列化数据的成本。
相关资料:
Introduction to Microsoft Edge WebView2 - Microsoft Edge Development | Microsoft Docs