2016-12-17 148 views
0

您知道是否可以在Go中创建交互式网页? 例如,有一个或多个按钮,还是一个组合框,用于根据选择刷新页面,数据将被过滤? 我试图寻找它,但没有找到任何相关的东西。Go中的交互式网页

在此先感谢。

+0

你必须使用JavaScript,或者transpile到JavaScript语言创建交互式网页。 TMK,Go没有任何转译器把它变成JS。 –

+0

感谢您的回答。是否可以使用GO管理数据和JS以显示它们并与GO进行交互以在需要时获取新数据? – azekirel555

+0

当然,您可以使用Golang编写Web服务器,它可以为Web客户端提供JSON和/或HTML服务。 “服务器呈现的应用程序”和SPA体系结构之间有很大的选择。所以你有一个用Golang写的服务器和JS中的Web客户端。 –

回答

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代码来增强功能 - 如果您有这种需求或需要这样做。

对于前者,有GopherJS。 GopherJS将Go代码编译为纯Javascript代码,所以它不是一个真正的Web框架,但是您可以用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

Referencing Go array in Javascript

+0

感谢您的回答,我已经开始使用Gowut。你能否告诉我有关使用哪个函数将数据存储在二维数组中 - 比如使用Excel/Calc(我试图在这种结构中呈现数据并根据我如何使用某些过滤器进行更新)在网页上添加)?提前致谢。 – azekirel555

+0

@ azekirel555对于二维数组,我使用['gwu.Table'](https://godoc.org/github.com/icza/gowut/gwu#Table)。 – icza

+0

非常感谢,我要看看这个。 – azekirel555

0

不,您不能在Go中编程交互式网页。这是因为Go程序在服务器上运行,而不是在Web浏览器中运行。

要做一些互动的事情,你必须编写一个JavaScript程序,与服务器上的Go程序通信

Go程序以某种方式与交互式Web应用程序有关,但交互性来自JavaScript部分。