Go再学习_7.Go GUI

Go GUI总览

一般情况下,使用go来作为主开发语言,GUI实现有如下几类:

  • Web UI, 使用Go写服务,然后打包进去web ui,实现一个本地版本的web程序。
  • electron/NW, 使用go实现后端功能,前端所有部分使用elecron/NW实现。
  • GTK,QT,IMGUI … 第三方UI库的Go绑定,比较成熟,但是学习难度也高。
  • Sciter的Go绑定。这个比较特殊,但是也是最有特色的一个。

这里比较推荐的是WebUI, Sciter这两种方式。
大多情况下,webui已经可以达到我们的目的了。

并且,由于go无法编译为一般意义上的动态链接库,所以,很多binding无法绕开第三方库的授权限制,所以,go在GUI这块天生短板,不建议直接用它来进行GUI的开发。

go擅长并发和网络,所以在制作服务,中间件,数据处理方面有优势,扬长避短才是正途。

下面,只针对几个有特点的进行简述。

WebUI

这个过于简单,最大的要求是需要会前后端分离设计,以及编写web界面。

Go-GTK

前提是,你懂得GTK3这个UI框架基础的知识。
有一个写的很好的系列文章,这里我不班门弄斧了:
https://blog.csdn.net/tennysonsky/category_9271070.html

个人觉得,简单工具一类的可以用用,有复杂UI逻辑和界面美化需求的,建议放弃此框架。

Go-Qt

这个前提是懂得QT框架。类似GTK,但是由于QT本身比较强大,对于客户端UI来讲是一个非常好的选择。
https://github.com/therecipe/qt/wiki/Gallery

非常推荐,但是因为授权和体积原因,使用时需要慎重考虑。

Go-Sciter

这个是比较有特点,也是推荐个人使用的一个。
https://github.com/sciter-sdk/go-sciter

总结

如无特别需求,建议直接使用WebUI的方式提供。

如果有特别的需求,尽量在上述几个中择优选择。

如果有时间,有人手,更建议做分层设计,让更合适的语言和工具实现UI,做不到的部分再用Go或者合适的语言实现。

你可能感兴趣的:(Go语言)