一个用于C/C++和Golang的小型cross-platform WebVIEW库,用于构建现代cross-platform GUI。此外,还提供了Rust绑定、Python绑定、Nim绑定、Haskell、C#绑定和Java绑定。
该项目的目标是为最广泛使用的平台创建一个通用的html5ui抽象层。
它支持two-way JavaScript绑定(从C/C++ +/GO调用JavaScript并从JavaScript调用C/C++ +GO)。
它在macOS上使用Cocoa/WebKit,在Linux上使用gtk-webkit2,在windows10上使用Edge。
面向围棋开发者的Webview
如果您对C/C++中的WebVIEW应用程序感兴趣,请跳转到下一节。
Getting started
go get
$ go get github.com/webview/webview
导入包并开始使用:
package main
import "github.com/webview/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应用
.desktop
在MacOS上,你可能会发布一个应用程序包。创建以下目录结构并压缩它:
example.app
└── Contents
├── Info.plist
├── MacOS
| └── example
└── Resources
└── example.icns
Info.plist*.icns
windreswebview.dllWebView2Loader.dll
另外,如果你想cross-compile你的webview应用-使用xgo。
正在从v0.1.1迁移到v0.10.0
webview.Open()webview.Debug()webview.Debugf()webview.SettingsWebview.Loop()Run()WebView.Run()WebView.Terminate()WebView.SetTitle()WebView.Dispatch()WebView.Exit()WebView.Destroy()WebView.SetColor()Window()webview.DialogWebView.Eval()WebView.InjectCSS()WebView.Bind()
C/C++开发人员Webview
下载webview.h并将其包含在C/C++代码中:
C++:
// main.cc
#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();
w.destroy();
return 0;
}
Build it:
# Linux
$ c++ main.cc `pkg-config --cflags --libs gtk+-3.0 webkit2gtk-4.0` -o webview-example
# MacOS
$ c++ main.cc -std=c++11 -framework WebKit -o webview-example
# Windows (x64)
$ c++ main.cc -mwindows -L./dll/x64 -lwebview -lWebView2Loader -o webview-example.exe
C:
// main .c
#include "webview.h"
#ifdef WIN32
int WINAPI WinMain(HINSTANCE hInt, HINSTANCE hPrevInst, LPSTR lpCmdLine,
int nCmdShow) {
#else
int main() {
#endif
webview_t w = webview_create(0, NULL);
webview_set_title(w, "Webview Example");
webview_set_size(w, 480, 320, WEBVIEW_HINT_NONE);
webview_navigate(w, "https://en.m.wikipedia.org/wiki/Main_Page");
webview_run(w);
webview_destroy(w);
return 0;
}
Build it:
# Linux
$ g++ main.c `pkg-config --cflags --libs gtk+-3.0 webkit2gtk-4.0` -o webview-example
# MacOS
$ g++ main.c -std=c++11 -framework WebKit -o webview-example
# Windows (x64)
$ g++ main.c -mwindows -L./dll/x64 -lwebview -lWebView2Loader -o webview-example.exe
在Windows上,使用cl.exe编译时可以直接使用webview库,但是WebView2Loader.dll仍然是必需的。要使用MinGW,您可以动态链接预构建的webview.dll(这种方法在Cgo绑定中使用)。
webview.h
从v0.1.1迁移到v0.10.0
webview_tstruct webviewwebview_bind()webview_return()webview()webview_init()webview_create()webview_exit()webview_destroy()webview_loop()webview_run()webview_terminate()webview_dispatch()webview_set_title()webview_set_color()webview_get_windowwebview_set_fullscreen()webview_dialog()webview_eval()webview_inject_css()webview_eval()webview_debug()
Notes
wxallowedsudo apt install webkit2gtk-4.0pkg install webkit2-gtk3
License
代码是在麻省理工学院授权下发布的,也可以在你的专有项目中使用。