您是否知道可以在Go中创建交互式网页?
例如,是否具有一个或多个按钮,或者一个组合框可以根据选择过滤正在刷新的数据的页面?
我试图寻找它,但是没有找到任何相关的东西。
提前致谢。
最佳答案
浏览器无法直接运行Go代码。客户端的交互式网页使用不同的技术,例如HTML,Javascript和CSS。
但是,在客户端使用上述语言并在服务器端使用Go执行所有操作是可行的技术堆栈。
话虽这么说,仍然有一些框架可以让您用Go编写所有内容,它们将Go代码转换为客户端可以理解/支持的语言,或者可以为客户端生成与服务器端Go交互的代码码。
对于后者,有Gowut (Go Web UI Toolkit)(公开:我是作者)。使用Gowut,您可以用Go编写所有内容(客户端和服务器端),而Gowut可以即时生成必要的客户端代码,并负责生成的客户端代码和Go服务器代码之间的通信。有一个Gowut的现场演示,您可以在此处查看并了解它的功能:Gowut - Showcase of Features
Gowut会创建完全动态的网页,内容将被呈现,并且可以更改而无需重新加载页面。而且,一切都可以简单地使用Go代码完成,但是您可以使用HTML / JS / CSS代码来增添趣味性–如果您有需要或需要的话。
对于前者,在Go 1.11中添加了GopherJS和Go's WebAssembly target。 GopherJS将Go代码编译为纯Javascript代码,因此它并不是真正的Web框架,但是您可以使用Go在其中编写客户端代码。您仍然必须照顾服务器端代码以及它们之间的通信。 WebAssembly目标的工作方式与GopherJS相似:您编写Go代码,该代码将被编译成能够在浏览器中运行的形式(由浏览器运行)。链接的Wiki页面包含所有如何实现/使用的详细信息。
标准库中还有一个功能强大的模板引擎: html/template
。尽管模板仅在服务器端执行,但是借助一些基本的Javascript代码和AJAX调用(或Websocket),您可以使客户端动态和交互式。有关示例,请参见以下问题和解答:
Creating load more button in Golang with templates
Dynamically refresh a part of the template when a variable is updated golang
Referencing Go array in Javascript