WebView2介绍

介绍

WebView2(Microsoft Edge WebView2)是微软推出的Windows平台控件,基于 Chromium 内核(和新版 Edge 浏览器同源)

作用

让原生桌面应用(Win32、WPF、WinForms、C++、Delphi、Python、Electron 等)嵌入网页渲染能力。

简单理解

在桌面软件里内置一套完整浏览器内核,用来展示网页、运行前端页面,替代老旧、基于 IE 的 WebBrowser 控件。

区分:旧 WebBrowser = IE 内核;WebView2 = Chromium(Edge)内核。仅支持 Windows,不支持 macOS/Linux。

架构模式(两种分发模型)

1. 独立运行时模式(Evergreen 常青模式,推荐)

  • 用户电脑安装全局 WebView2 Runtime(独立安装包),所有使用 WebView2 的软件共用这一套内核。
  • 优点:自动跟随系统更新修复漏洞、体积小、减少磁盘占用。
  • 缺点:程序运行前提是目标机器预装 Runtime;无网络环境下无法自动更新内核。

2. 内置运行时模式(独立打包模式 / Standalone)

  • 开发者把完整 WebView2 内核文件随软件一起打包发布。
  • 优点:不需要用户提前安装运行时,开箱即用;版本可控,不会被系统更新改动内核。
  • 缺点:安装包体积巨大(数百MB);不会自动接收浏览器安全补丁,需要软件新版本同步更新内核。

功能

  1. 完整现代网页标准支持
    支持 HTML5、CSS3、ES6+、WebAssembly、Media、Canvas、WebGL,兼容现代前端框架 Vue/React/Angular,不再存在 IE 的兼容性缺陷。

  2. 原生程序 ↔ 前端双向通信(关键特性)

    • JS 调用桌面原生方法:网页 JavaScript 发送消息,桌面程序接收并执行业务逻辑(读写本地文件、调用硬件、访问系统API、数据库)。
    • 原生程序调用 JS:桌面端主动向页面注入脚本、执行前端函数,向前端推送数据。

      通信基于消息通道,支持同步/异步调用,可以传递 JSON 数据。

  3. 本地资源加载
    可以加载:远程网络网页、本地静态html、内嵌资源;支持自定义本地虚拟域名,把本地文件夹映射成网页可访问地址,实现不启动Web服务器直接访问本地前端资源。

  4. 浏览器基础能力
    Cookie、缓存、本地存储(localStorage/sessionStorage/indexDB)、权限控制、打印、下载、文件上传、网页弹窗、历史前进后退、缩放、上下文菜单。

  5. 脚本注入
    在页面加载前/加载完成后自动注入JavaScript、CSS;支持屏蔽页面广告、修改页面DOM、拦截网页请求。

  6. 网络请求拦截
    可拦截网页发出的HTTP/HTTPS请求,修改请求头、重定向地址、直接返回自定义响应;常用于接口代理、内网页面适配、鉴权处理。

数据存储与用户配置

WebView2 所有缓存数据隔离在用户配置目录(Profile):

  • Cookie、缓存、localStorage、indexDB、证书、密码、网站权限全部保存在此文件夹。
  • 重要特性:支持多实例独立配置文件。
    多个WebView窗口可以共用一套缓存,或者每个窗口使用独立文件夹,实现登录隔离(软件内同时登录两套账号互不干扰)。
  • 开发者可自定义存储路径;也可以选择临时模式(无痕模式),程序关闭自动清空所有数据,不写入磁盘。

常见可开发平台

支持WebView2的桌面框架

  • C++ Win32(底层原生API)
  • .NET:WinForms、WPF
  • .NET MAUI
  • Delphi / Lazarus
  • Python (PyWebView、wxPython)
  • PowerShell
  • Electron(Windows下可选用WebView2渲染,替代内置Chromium)
  • Visual Basic 6(第三方封装组件)

与同类嵌入式浏览器控件对比

  1. WebView2 vs 旧 WebBrowser(IE)
    WebBrowser:内核老旧、不支持现代前端、停止微软维护、大量前端框架无法运行;仅遗留项目使用。
    WebView2:持续更新、标准兼容、功能完善。

  2. WebView2 vs CEF(Chromium Embedded Framework)
    CEF:开源、跨平台(Windows/macOS/Linux),体积大,需要自行打包Chromium。
    WebView2:微软维护,仅限Windows;常青模式下无需携带内核,部署简单;API更轻量化,但跨平台能力缺失。

  3. WebView2 vs WebKit
    WebKit多用于macOS、移动端;Windows生态优先选择WebView2。

常用场景

  1. 传统桌面软件嵌入前端管理界面,界面用网页开发,业务底层保留原生代码;
  2. 客户端单页应用:打包Vue/React页面做成独立桌面软件(轻量替代Electron);
  3. 内网业务系统客户端,内置网页门户;
  4. 软件内置帮助文档、交互式可视化报表;
  5. 自动化测试、网页抓取工具。

局限性

  1. 仅支持Windows系统,Windows最低版本:Windows 10 / Windows 11;不支持Win7(新版Runtime不再支持Win7)、macOS、Linux。
  2. 依赖WebView2 Runtime,常青模式下需要处理用户未安装运行时的兼容弹窗引导;
  3. 无法脱离Chromium内核,不能极致精简软件体积(除非使用常青模式);
  4. GPU渲染异常、高DPI缩放、系统深色模式需要额外适配。

原文出处:/show_1GW3iqk6Ik1a.html