webview
一个用于 C/C++/Golang 的微型跨平台 Webview 库,用于构建现代的跨平台 GUI。 另外,还有 Rust bindings, Python bindings, Nim bindings, Haskell, C# bindings 和 Java bindings。
该项目的目标是为最广泛使用的平台创建一个通用的HTML5 UI抽象层。
它支持双向 JavaScript 绑定(从 C/C++/Go 调用 JavaScrip t和从 JavaScript 调用 C/C++/Go)。
它在 macOS 上使用 Cocoa/WebKit,在 Linux 上使用 gtk-webkit2,在 Windows 10 上使用 Edge。
面向 Go 开发者的 Webview
如果你对用 C/C++ 编写 Webview 应用程序感兴趣,请跳到下一节。
入门
用 go get 安装 Webview 库:
$ go get github.com/zserge/webview
导入包并开始使用它:
package main import "github.com/zserge/webview" func main() { debug := true w := webview.New(debug) defer w.Destroy() w.SetTitle("Minimal webview example") w.SetSize(800, 600, webview.HintNone) w.Navigate("https://en.m.wikipedia.org/wiki/Main_Page") w.Run() }
要构建应用程序,请使用以下命令:
# Linux $ go build -o webview-example && ./webview-example # MacOS uses app bundles for GUI apps $ mkdir -p example.app/Contents/MacOS $ go build -o example.app/Contents/MacOS/example $ open example.app # Or click on the app in Finder # Windows requires special linker flags for GUI apps. # It's also recommended to use TDM-GCC-64 compiler for CGo. # http://tdm-gcc.tdragon.net/download $ go build -ldflags="-H windowsgui" -o webview-example.exe
有关详细信息,请参阅:godoc.
分发 Webview 应用
在 Linux 上,你有一个独立的可执行文件。它将依赖于 GTK3 和 GtkWebkit2,所以如果你以 DEB 或 RPM 格式发布你的应用,则应包括这些依赖项。可以通过提供 .desktop 文件来指定应用程序图标
在 MacOS 上,你可能会发布一个应用程序包。创建以下目录结构并压缩它:
example.app └── Contents ├── Info.plist ├── MacOS | └── example └── Resources └── example.icns
在这里,Info.plist 是一个属性列表文件 而 * .icns 是一种特殊的图标格式。 您可以 在线 将PNG转换为icns。
在 Windows 上,您可能希望为可执行文件有一个自定义图标。 可以通过提供资源文件,对其进行编译并与其链接来完成。 通常,windres 实用程序用于编译资源。 此外,在 Windows 上,必须将 webview.dll 和 WebView2Loader.dll 与您的应用可执行文件放置在同一目录中。
另外,如果要交叉编译Webview应用程序,请使用 xgo。
面向 C/C++ 开发人员的 Webview
下载 webview.h 并将其包含在您的 C/C++ 代码中:
// main.c #include "webview.h" #ifdef WIN32 int WINAPI WinMain(HINSTANCE hInt, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { #else int main() { #endif webview::webview w(true, nullptr); w.set_title("Minimal example"); w.set_size(480, 320, WEBVIEW_HINT_NONE); w.navigate("https://en.m.wikipedia.org/wiki/Main_Page"); w.run(); return 0; }
构建它:
# Linux $ c++ main.cc `pkg-config --cflags --libs gtk+-3.0 webkit2gtk-4.0` -o webview-example # MacOS $ c++ main.cc -framework WebKit -o webview-example # Windows (x64) $ c++ main.cc -mwindows -L./dll/x64 -lwebview -lWebView2Loader -o webview-example.exe
在 Windows 上,使用 cl.exe 编译时可以直接使用 webview 库,但是仍然需要 WebView2Loader.dll。 要使用 MinGW,您可以动态链接预建的 webview.dll(在Cgo 绑定中使用此方法)。
完整的 C/C++ API 在 webview.h 文件的顶部进行了描述。
说明
在 OpenBSD 上执行需要 wxallowed mount(8) 选项。对于 Ubuntu 用户,请运行 sudo apt install webkit2gtk-4.0 来安装 webkit2gtk-4.0 相关项目。 还支持 FreeBSD,要安装 webkit2,请运行 pkg install webkit2-gtk3。
License许可
代码是根据 MIT 许可分发的,也可以在您的专有项目中随意使用它。