Golang 的 Webview 跨平台方案允许你使用 Go 语言创建轻量级的桌面应用程序,通过嵌入 Web 技术(HTML/CSS/JavaScript)作为用户界面。以下是主要方案和示例:
1. Webview 库
推荐使用 webview 库(如 webview),它支持 Windows、macOS 和 Linux。
安装:
go mod init your-app
go get github.com/webview/webview
示例代码:
package main
import (
"github.com/webview/webview"
)
func main() {
w := webview.New(true) // true 启用调试工具
defer w.Destroy()
w.SetTitle("Go WebView App")
w.SetSize(800, 600, webview.HintNone)
w.Navigate("https://example.com") // 或加载本地 HTML 文件
w.Run()
}
2. 关键特性
- 跨平台: 自动适配各操作系统(Windows 使用 Edge/IE,macOS 使用 WebKit,Linux 使用 WebKitGTK)。
- 轻量级: 无需依赖外部浏览器(如 Electron),应用体积小。
- 交互: 通过绑定 Go 函数到 JavaScript,实现后端逻辑(如文件操作、网络请求)。
3. 进阶用法
绑定 Go 函数到前端:
w.Bind("goFunction", func(msg string) string {
return "Go received: " + msg
})
在 HTML/JavaScript 中调用:
<script>
goFunction("Hello").then(alert); // 显示 "Go received: Hello"
</script>
4. 替代方案
- Lorca: 使用系统 Chrome 实例,适合需要完整 Chromium 功能的场景(但依赖用户安装 Chrome)。
- Electron + Go: 通过 IPC 将 Electron 前端与 Go 后端连接,但更重。
5. 注意事项
- 功能限制: Webview 不支持所有浏览器 API(如插件),复杂 UI 需测试兼容性。
- 部署: 编译为各平台二进制文件(使用
GOOS 和 GOARCH 环境变量)。
总结:Golang Webview 是构建轻量跨平台桌面应用的高效方案,适合简单到中等复杂度的项目。