Skip to content

介绍

webview 是一个 Windows 桌面 WebView2 C++/JS 框架,提供类 Electron 的三层架构(App / Window / Bridge),但产物是单个原生 exe——前端工程与资源在构建期嵌入可执行文件,WebView2Loader 静态链入,无需部署任何 dll

技术栈:C++17 + cmkr + WebView2 COM + WIL + nlohmann_json。仅 Windows x64。

为什么造它

方案包体启动内存运行时依赖语言
Electron大(带 Chromium)Node 运行时JS/TS
Tauri系统 WebViewRust + JS
webview小(单 exe)WebView2 Runtime(Win10/11 自带)C++ + JS

webview 的定位:要 Electron 的开发体验(前端复用 + RPC 双向通信 + 多窗口),但产物是 C++ 原生单文件,体积小、启动快、零 dll 部署。

核心特性

  • RPC 双向:JS↔C++ 同步/异步调用,JSON envelope,call<T> 嵌套泵等 Promise,重入死锁检测
  • 多窗口管理:MRU 激活历史 / 父子树 / 分组 / 批量操作 / 网格排布 / 跨窗口广播
  • 系统集成:Display / shell / dialog / Menu / Tray / 全局快捷键 / 单实例锁 / taskbar / 持久化
  • 任务栏高级:进度状态 / 角标 / 缩略图裁剪 / 缩略图工具栏
  • 事件总线:WindowEvent / PageEvent 全映射,去抖 Resize / Move
  • 可取消关闭onBeforeClose 返回 false 阻止关闭
  • HTML 资源打包:前端工程打进 exe 单文件分发,opts.url 无感
  • .7z 资源压缩:可选 LZMA2 整包压缩,砍 exe 体积
  • WindowTem 模板基类:声明式 emit 白名单 + 内置窗口控制槽,省 RPC 样板

适用场景

  • 内部工具 / 管理端,要小体积单文件分发
  • 从 Electron / TS 桌面应用迁移到 C++ 原生壳
  • 需要调用 Win32 / 驱动 / 本地 C++ 库,同时要现代前端 UI
  • 嵌入 Vue / React / 静态站点作为桌面 GUI

不适用

  • 跨平台需求(仅 Windows)
  • 需要 Chrome 专属 API(基于系统 WebView2,非自带 Chromium)

下一步

快速上手 跑起 hello world,或读 架构 理解三层模型。