Go 中的交互式网页
Interactive web pages in Go
您知道是否可以在 Go 中创建交互式网页吗?
例如,有一个或多个按钮,或者有一个组合框来刷新页面并根据选择过滤数据?
我试图寻找它,但没有找到任何相关内容。
提前致谢。
不,您不能用 Go 编写交互式网页。这是因为 Go 程序 运行 在服务器上,而不是在网络浏览器中。
要进行交互,您必须编写 JavaScript 程序,与服务器上的 Go 程序通信。
Go 程序以某种方式参与了交互式 Web 应用程序,但交互性来自 JavaScript 部分。
浏览器无法直接 运行ning Go 代码。客户端的交互式网页使用了不同的技术,例如HTML、Javascript和CSS.
但是,在客户端使用上述语言,在服务器端用 Go 做所有事情,这是一个可行的技术栈。
也就是说,仍然有一些框架允许您用 Go 编写所有内容,它们将您的 Go 代码转换为客户端理解/支持的语言,或者它们为客户端生成与服务器端 Go 代码。
对于后者,有Gowut (Go Web UI Toolkit) (disclosure: I'm the author). With Gowut, you can write everything in Go (both the client and the server side), and Gowut generates the necessary client code on-the-fly, and it takes care of the communication between the generated client code and the Go server code. There is a live demo of Gowut, you can check it out and see what it is capabe of here: Gowut - Showcase of Features
Gowut 创建完全动态的网页,呈现内容并且可以在不重新加载页面的情况下更改。尽管如此,一切都可以简单地使用 Go 代码来完成,但是你有可能使用 HTML / JS / CSS 代码来让事情变得有趣——如果你有冲动或需要这样做的话。
对于前者,Go 1.11 中添加了 GopherJS and Go's WebAssembly target。 GopherJS 将 Go 代码编译为纯 Javascript 代码,因此它并不是真正的 Web 框架,但您可以使用它在 Go 中编写客户端代码。您仍然需要处理服务器端代码以及它们之间的通信。 WebAssembly 目标的工作方式与 GopherJS 类似:您编写的 Go 代码将被编译为能够在浏览器中 运行ning 的形式(浏览器 运行)。链接的维基页面包含如何实现/使用的所有详细信息。
标准库中还有一个强大的模板引擎:html/template
。尽管模板仅在服务器端执行,但借助一些基本 Javascript 代码和 AJAX 调用(或 websockets),您可以使客户端动态和交互。例如,请参阅这些问题和答案:
Dynamically refresh a part of the template when a variable is updated golang
Referencing Go array in Javascript
你可以做到这一点,使用强大的 Go 和 Gin Gonic 框架 - 在此处查看简单易用的文章:https://semaphoreci.com/community/tutorials/building-go-web-applications-and-microservices-using-gin
""不,您不能用 Go 编写交互式网页。这是因为 Go 程序 运行 在服务器上,而不是在网络浏览器中。
要进行交互,您必须编写 JavaScript 与服务器上的 Go 程序通信的程序。
Go 程序以某种方式参与了交互式 Web 应用程序,但交互性来自 JavaScript 部分。 ""
我相信答案实际上是肯定的 Go 能够创建交互式网站,Go 能够从 http.Request 中读取所以从这个输入你可以通过你的 Go 代码定义接下来会发生什么some Advanced Go programing.Go 本身在理论上被设计成一种网络服务器端编程语言,但当然它的输出媒介是网络。
我找到了我自己问题的长答案。不可能直接用 Go 直接编写交互式网站,但是使用 GopherJS(https://github.com/gopherjs/gopherjs)(它是从 Go 到 JS 的编译器)并且 Go 很有可能创建完全交互式的网站。
虽然这项工作在进行中,但暂时没有可用的信息(2018/09/25)
感谢大家的努力(好的和坏的)。
感谢这部分"For the former, there's GopherJS. GopherJS compiles Go code to pure Javascript code, so it's not really a web framework, but you can write client side code in Go with that. You still have to take care of server-side code and the communication between them."帮助分配,
您知道是否可以在 Go 中创建交互式网页吗? 例如,有一个或多个按钮,或者有一个组合框来刷新页面并根据选择过滤数据? 我试图寻找它,但没有找到任何相关内容。
提前致谢。
不,您不能用 Go 编写交互式网页。这是因为 Go 程序 运行 在服务器上,而不是在网络浏览器中。
要进行交互,您必须编写 JavaScript 程序,与服务器上的 Go 程序通信。
Go 程序以某种方式参与了交互式 Web 应用程序,但交互性来自 JavaScript 部分。
浏览器无法直接 运行ning Go 代码。客户端的交互式网页使用了不同的技术,例如HTML、Javascript和CSS.
但是,在客户端使用上述语言,在服务器端用 Go 做所有事情,这是一个可行的技术栈。
也就是说,仍然有一些框架允许您用 Go 编写所有内容,它们将您的 Go 代码转换为客户端理解/支持的语言,或者它们为客户端生成与服务器端 Go 代码。
对于后者,有Gowut (Go Web UI Toolkit) (disclosure: I'm the author). With Gowut, you can write everything in Go (both the client and the server side), and Gowut generates the necessary client code on-the-fly, and it takes care of the communication between the generated client code and the Go server code. There is a live demo of Gowut, you can check it out and see what it is capabe of here: Gowut - Showcase of Features
Gowut 创建完全动态的网页,呈现内容并且可以在不重新加载页面的情况下更改。尽管如此,一切都可以简单地使用 Go 代码来完成,但是你有可能使用 HTML / JS / CSS 代码来让事情变得有趣——如果你有冲动或需要这样做的话。
对于前者,Go 1.11 中添加了 GopherJS and Go's WebAssembly target。 GopherJS 将 Go 代码编译为纯 Javascript 代码,因此它并不是真正的 Web 框架,但您可以使用它在 Go 中编写客户端代码。您仍然需要处理服务器端代码以及它们之间的通信。 WebAssembly 目标的工作方式与 GopherJS 类似:您编写的 Go 代码将被编译为能够在浏览器中 运行ning 的形式(浏览器 运行)。链接的维基页面包含如何实现/使用的所有详细信息。
标准库中还有一个强大的模板引擎:html/template
。尽管模板仅在服务器端执行,但借助一些基本 Javascript 代码和 AJAX 调用(或 websockets),您可以使客户端动态和交互。例如,请参阅这些问题和答案:
Dynamically refresh a part of the template when a variable is updated golang
Referencing Go array in Javascript
你可以做到这一点,使用强大的 Go 和 Gin Gonic 框架 - 在此处查看简单易用的文章:https://semaphoreci.com/community/tutorials/building-go-web-applications-and-microservices-using-gin
""不,您不能用 Go 编写交互式网页。这是因为 Go 程序 运行 在服务器上,而不是在网络浏览器中。
要进行交互,您必须编写 JavaScript 与服务器上的 Go 程序通信的程序。
Go 程序以某种方式参与了交互式 Web 应用程序,但交互性来自 JavaScript 部分。 ""
我相信答案实际上是肯定的 Go 能够创建交互式网站,Go 能够从 http.Request 中读取所以从这个输入你可以通过你的 Go 代码定义接下来会发生什么some Advanced Go programing.Go 本身在理论上被设计成一种网络服务器端编程语言,但当然它的输出媒介是网络。
我找到了我自己问题的长答案。不可能直接用 Go 直接编写交互式网站,但是使用 GopherJS(https://github.com/gopherjs/gopherjs)(它是从 Go 到 JS 的编译器)并且 Go 很有可能创建完全交互式的网站。 虽然这项工作在进行中,但暂时没有可用的信息(2018/09/25)
感谢大家的努力(好的和坏的)。
感谢这部分"For the former, there's GopherJS. GopherJS compiles Go code to pure Javascript code, so it's not really a web framework, but you can write client side code in Go with that. You still have to take care of server-side code and the communication between them."帮助分配,