您知道在Go中创建交互式网页是否可行? 例如,有一个或多个按钮,还是一个组合框,刷新页面时根据选择过滤数据? 我试图寻找它,但没有找到任何相关的东西。
提前致谢。
答案 0 :(得分:6)
浏览器无法直接运行Go代码。客户端的交互式网页使用不同的技术,例如HTML,Javascript和CSS。
但是,在客户端使用上述语言是一个可行的技术堆栈,并且在服务器端的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代码将编译为能够在浏览器中运行的表单(由浏览器运行)。链接的维基页面包含了如何实现/使用它的所有细节。
标准库中还有一个功能强大的模板引擎:html/template
。虽然模板只在服务器端执行,但在一些基本的Javascript代码和AJAX调用(或websockets)的帮助下,您可以使客户端动态和交互。例如,请参阅以下问题和答案:
Creating load more button in Golang with templates
Dynamically refresh a part of the template when a variable is updated golang
答案 1 :(得分:0)
不,您无法在Go中编写交互式网页。这是因为Go程序在服务器上运行,而不是在Web浏览器中运行。
要做一些互动的事情,你必须编写与服务器上的Go程序进行通信的JavaScript程序。
Go计划以某种方式涉及交互式网络应用程序,但交互性来自JavaScript部分。
答案 2 :(得分:0)
您可以使用Go和Gin Gonic框架的强大功能-在此处查看简单方便的文章:https://semaphoreci.com/community/tutorials/building-go-web-applications-and-microservices-using-gin
答案 3 :(得分:0)
“”否,您不能在Go中编写交互式网页。这是因为Go程序在服务器而不是Web浏览器上运行。
要进行交互操作,您必须编写与服务器上的Go程序通信的JavaScript程序。
Go程序以某种方式与交互式Web应用程序有关,但交互性来自JavaScript部分。 “”
我相信答案是肯定的,Go可以创建交互式网站,go可以从http.Request中读取内容,因此您可以通过此输入通过Go Code定义一些高级Go编程的下一步操作.Go本身在理论上被设计为Web服务器端编程语言,但它的输出介质当然是Web。
答案 4 :(得分:0)
我对自己的问题有很长的答案。仅使用GopherJS(https://github.com/gopherjs/gopherjs)(它是Go到JS的编译器),仅使用Go BUT不能直接对交互式网站进行编程,而Go可以创建完全交互式的网站。 尽管这项工作很先进,但目前没有可用的信息分配(2018/09/25)
我感谢大家的努力(好与坏)。
感谢您的这一部分“对于前者,有GopherJS。GopherJS将Go代码编译为纯Javascript代码,因此它不是真正的Web框架,但是您可以用Go编写客户端代码。您仍然需要服务器端代码以及它们之间的通信。”帮助分配,