本文摘自php中文网,作者Guanhui,侵删。
众所周知,Go 主要用于构建 API、web 后端和 CLI 工具。但有趣的是,Go 可以用在我们没有预料到的地方。
例如,我们可以使用 Wails 框架用 Go 和 Vue.js 构建一个桌面应用程序。
这是一个新框架,还在测试阶段,但我很惊讶,用它可以很容易的开发,建立应用程序。
Wails 提供了将 Go 代码和 web 前端打包成单一二进制文件的能力。Wails CLI 通过处理项目创建、编译和打包,使您可以轻松地完成这项工作。
应用程序
我们将构建一个非常简单的应用程序来实时显示我的机器的 CPU 使用情况。如果你有时间,喜欢 Wails,你可以想出一些更有创意和更复杂的东西。
安装
Wails CLI 可以使用 go get
安装。安装之后,你应该使用 wails setup
命令进行设置。
1 2 |
|
然后让我们用 cpustats
来启动我们的项目:
1 2 |
|
我们的项目包括 Go 后端和 Vue.js 前端。main.go
将是我们的入口点,我们可以在其中包含任何其他依赖项,还有 go.mod
文件来管理它们。frontend
文件夹包含 Vue.js 组件,webpack 和 CSS。
概念
有两个主要组件用于在后端和前端之间共享数据:绑定和事件。
绑定是一个单一的方法,它允许你向前端公开(绑定)你的 Go 代码。
此外,Wails 还提供了一个统一的事件系统,类似于 Javascript 的本地事件系统。这意味着从 Go 或 Javascript 发送的任何事件都可以由任何一方接收。数据可以随任何事件一起传递。这允许你做一些优雅的事情,比如让后台进程在 Go 中运行,并通知前端任何更新。
后端
让我们先开发一个后端部分,获取 CPU 使用情况,然后使用 bind
方法将其发送到前端。
我们将创建一个新的包,并定义一个类型,我将公开(绑定)到前端。
pkg/sys/sys.go:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
如果你的结构体有一个 WailsInit
方法,Wails 将在启动时调用它。这允许您在主应用程序启动之前进行一些初始化。
在 main.go
中引入 sys
这个包,绑定 Stats
实例返回给前端:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
前端
我们从 Go 绑定了 stats
实例,它可以在前端被 window.backend.Stats
调用。如果我们想调用 GetCPUUsage()
函数 ,它会给我们返回一个应答。
1 2 3 |
|
要将整个项目构建成单一的二进制文件,我们应该运行 wails build
,可以添加 -d
标志来构建一个可调试的版本。它将创建一个名称与项目名称匹配的二进制文件。
相关阅读 >>
聊聊dubbo-Go-proxy的recoveryfilter
更多相关阅读请进入《Go》频道 >>
Go语言101
一个与时俱进的Go编程知识库。