webview

一个用于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

代码是在麻省理工学院授权下发布的,也可以在你的专有项目中使用。