webui-dev/webui
GitHub: webui-dev/webui
一个轻量级便携的 GUI 库,允许开发者使用任意已安装的 Web 浏览器作为前端界面,后端搭配任意编程语言。
Stars: 4528 | Forks: 300

# WebUI v2.5.0-beta.4
[](https://github.com/webui-dev/webui/actions?query=branch%3Amain)
[](https://github.com/webui-dev/webui/pulse)
[](https://github.com/webui-dev/webui/releases/latest)
[](https://github.com/webui-dev/webui/blob/main/LICENSE)




### _向 AI 提问任何关于 WebUI 的问题_
### [WebUI GPT - C/C++](https://chatgpt.com/g/g-685b01d42208819185a5a7c8ed74fa23-webui-c-c)
## 下载
- [最新稳定版](https://github.com/webui-dev/webui/releases)
- [每日构建版](https://github.com/webui-dev/webui/releases/tag/nightly)
## 目录
- [特性](#features)
- [展示](#showcase)
- [UI 与 Web 技术](#ui--the-web-technologies)
- [文档](#documentation)
- [构建](#build)
- [示例](#examples)
- [封装库](#wrappers)
- [支持的 Web 浏览器](#supported-web-browsers)
- [许可证](#license)
## 文档
- [在线文档](https://webui.me/docs.html#/)
## 特性
- 可移植(*仅需在运行时使用 Web 浏览器,WebView 为可选项*)
- 单一头文件
- 轻量级(*仅几 Kb 的库*)且内存占用低
- 快速的二进制 WebSocket 通信协议
- 跨平台与多浏览器支持
- 使用私人配置文件以确保安全
- 跨平台 WebView(*可选*)
## UI 与 Web 技术
[Borislav Stanimirov](https://ibob.bg/) 在 [C++ Conference 2019 (_YouTube_)](https://www.youtube.com/watch?v=bbbcZd4cuxg) 上探讨了在 Web 浏览器中使用 HTML5 作为 GUI 的方法。

### 为什么使用 Web 浏览器?
如今的 Web 浏览器具备了现代 UI 所需的一切功能。Web 浏览器非常成熟且高度优化。因此,将其作为 GUI 将是一个绝佳的选择。虽然老旧的 GUI 库既复杂又过时,但基于 WebView 的应用程序仍然是一个选择。然而,WebView 需要庞大的 SDK 进行构建以及许多依赖项才能运行,并且它只能提供类似于真正 Web 浏览器的部分功能。这就是为什么 WebUI 使用真正的 Web 浏览器,为您提供全面 Web 技术的全部功能,同时保持您的软件轻量级和可移植性。
### 它是如何工作的?

可以将 WebUI 视为 WebView 控制器,但它不是将 WebView 控制器嵌入到您的程序中(因为这会使最终生成的程序体积庞大,并且由于需要 WebView 运行时而无法移植)。相反,通过使用 WebUI,您只需使用一个小巧的静态/动态库来运行任何已安装的 Web 浏览器并将其作为 GUI,这使得您的程序小巧、快速且可移植。**它唯一需要的只是一个 Web 浏览器**。
### 运行时依赖比较
| GUI | Windows 依赖 | Linux 依赖 | macOS 依赖 |
|-----------|---------|-------|-------|
| **Tauri** | WebView2 | GTK/WebKitGTK | WKWebView, WebKit |
| **Qt** | Qt 捆绑库 | Qt 捆绑库, libxcb, libxkbcommon... | Qt 捆绑库 |
| **Electron** | 内置 Chromium + Node.js | 内置 Chromium + Node.js | 内置 Chromium + Node.js |
| **NW.js** | 内置 Chromium + Node.js | 内置 Chromium + Node.js | 内置 Chromium + Node.js |
| **WebUI** | **仅需一个 Web 浏览器** | **仅需一个 Web 浏览器** | **仅需一个 Web 浏览器** |
## 构建 WebUI 库
### Windows
| 编译器 | 命令 |
|----------|---------|
| GCC | `mingw32-make` |
| MSVC | `nmake` |
Windows SSL/TLS(可选)
下载并安装 Windows 预编译的 OpenSSL 二进制文件: - **MSVC**: [x64 OpenSSL v3.3.1](https://slproweb.com/download/Win64OpenSSL-3_3_1.msi) 或 [_32位_](https://slproweb.com/download/Win32OpenSSL-3_3_1.msi)。有关更多信息,请参阅 [Wiki 列表](https://wiki.openssl.org/index.php/Binaries)。 - **MinGW**: [适用于 Windows 且带有 OpenSSL 的 Curl](https://curl.se/windows/) ``` # GCC mingw32-make WEBUI_USE_TLS=1 WEBUI_TLS_INCLUDE="C:\curl-xxx-xxx-mingw\curl-xxx-xxx-mingw\include" WEBUI_TLS_LIB="C:\curl-xxx-xxx-mingw\curl-xxx-xxx-mingw\lib" # MSVC nmake WEBUI_USE_TLS=1 WEBUI_TLS_INCLUDE="C:\Program Files\OpenSSL-xxx\include" WEBUI_TLS_LIB="C:\Program Files\OpenSSL-xxx\lib" ```Linux SSL/TLS(可选)
``` sudo apt update sudo apt install libssl-dev # GCC make WEBUI_USE_TLS=1 # Clang make WEBUI_USE_TLS=1 CC=clang ```macOS SSL/TLS(可选)
``` brew install openssl make WEBUI_USE_TLS=1 ```带有 SSL/TLS 的 Windows(可选)
| 编译器 | 类型 | 命令 | |----------|--------|---------| | GCC | 静态链接 | `gcc -Os -Wl,-subsystem=windows my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure-static -lws2_32 -Wall -luser32 -static -lole32 -lstdc++ -luuid -o my_application.exe` | | GCC | 动态链接 | `gcc -Wl,-subsystem=windows my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" "webui-2-secure.dll" -lws2_32 -Wall -luser32 -lole32 -lstdc++ -luuid -o my_application.exe` | | MSVC | 静态链接 | `cl my_application.c /I"_PATH_TO_WEBUI_INCLUDE_" /link /LIBPATH:"_PATH_TO_WEBUI_LIB_" /SUBSYSTEM:WINDOWS webui-2-secure-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:my_application.exe` | | MSVC | 动态链接 | `cl my_application.c /I"_PATH_TO_WEBUI_INCLUDE_" /link /LIBPATH:"_PATH_TO_WEBUI_LIB_" /SUBSYSTEM:WINDOWS webui-2-secure.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:my_application.exe` |带有 SSL/TLS 的 Linux(可选)
| 编译器 | 类型 | 命令 | |----------|--------|---------| | GCC | 静态链接 | `gcc -Os my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure-static -lpthread -lm -ldl -o my_application` | | GCC | 动态链接 | `gcc my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure -lpthread -lm -ldl -o my_application` | | Clang | 静态链接 | `clang -Os my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure-static -lpthread -lm -ldl -o my_application` | | Clang | 动态链接 | `clang my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure -lpthread -lm -ldl -o my_application` |带有 SSL/TLS 的 macOS(可选)
| 编译器 类型 | 命令 | |----------|--------|---------| | Clang | 静态链接 | `clang -Os my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure-static -lpthread -lm -framework Cocoa -framework WebKit -o my_application` | | Clang | 动态链接 | `clang my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure -lpthread -lm -framework Cocoa -framework WebKit -o my_application` |标签:C/C++, GUI框架, WebSocket, WebView, 事务性I/O, 依赖分析, 可视化界面, 客户端加密, 日志审计, 逆向工具