【问题标题】:Interactive web pages in GoGo 中的交互式网页
【发布时间】:2017-05-03 00:23:45
【问题描述】:

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

提前致谢。

【问题讨论】:

  • 您必须使用 JavaScript 或转换为 JavaScript 的语言来创建交互式网页。 TMK,Go 没有任何转译器将其转为 JS。
  • 感谢您的回答。是否可以使用 GO 管理数据并使用 JS 显示它们并在需要时与 GO 交互以获取新数据?
  • 是的,当然,您可以使用 Golang 编写一个 Web 服务器,它可以为 Web 客户端提供 JSON 和/或 HTML。 “服务器渲染的应用程序”和 SPA 架构之间有很大的选择。所以你有一个用 Golang 编写的服务器和一个用 JS 编写的 Web 客户端。
  • Gopherjs 是一个可能的解决方案,它转译到 javascript。否则,如果您正在寻找 cms,您也许可以使用 fragmenta 之类的东西。
  • 谢谢,我去看看 Gopherjs 和 Fragmenta

标签: web go server webpage interactive


【解决方案1】:

浏览器不能直接运行 Go 代码。客户端的交互式网页使用不同的技术,例如 HTML、Javascript 和 CSS。

但是,在客户端使用上述语言并在服务器端使用 Go 完成所有操作是一个可行的技术栈。

话虽如此,仍然有一些框架允许你用 Go 编写一切,它们将你的 Go 代码转换为客户端理解/支持的语言,或者它们为客户端生成与服务器交互的代码-side Go 代码。

对于后者,有Gowut (Go Web UI Toolkit)披露:我是作者)。使用 Gowut,您可以在 Go 中编写所有内容(客户端和服务器端),Gowut 即时生成必要的客户端代码,并负责生成的客户端代码和 Go 服务器代码之间的通信。有一个 Gowut 的现场演示,你可以在这里查看它的功能:Gowut - Showcase of Features

Gowut 创建完全动态的网页,内容被渲染并且可以在不重新加载页面的情况下更改。尽管如此,一切都可以简单地使用 Go 代码完成,但您可以使用 HTML / JS / CSS 代码来增加趣味——如果你有冲动或需要这样做的话。

对于前者,在 Go 1.11 中添加了 GopherJSGo's WebAssembly target。 GopherJS 将 Go 代码编译为纯 Javascript 代码,因此它不是真正的 Web 框架,但您可以使用它在 Go 中编写客户端代码。您仍然需要处理服务器端代码以及它们之间的通信。 WebAssembly 目标的工作方式与 GopherJS 类似:您编写 Go 代码,这些代码将被编译为能够在浏览器中运行(由浏览器运行)的表单。链接的 wiki 页面包含如何实现/使用此功能的所有详细信息。

标准库中还有一个强大的模板引擎: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

【讨论】:

  • 感谢您的回答,我已经开始使用Gowut了。您能否建议我使用哪个函数将数据存储在二维数组中 - 就像 Excel/Calc 一样(我正在尝试以这种结构呈现数据并根据我将如何使用一些过滤器来更新它在网页上添加)?提前致谢。
  • @azekirel555 对于二维数组,我会使用gwu.Table
  • 非常感谢,我去看看这个。
【解决方案2】:

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

要进行交互,您必须编写与服务器上的 Go 程序通信的 JavaScript 程序。

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

【讨论】:

    【解决方案3】:

    您可以使用 Go 和 Gin Gonic 框架的强大功能来做到这一点 - 在此处查看简单方便的文章:https://semaphoreci.com/community/tutorials/building-go-web-applications-and-microservices-using-gin

    【讨论】:

      【解决方案4】:

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

      要进行交互,您必须编写与服务器上的 Go 程序通信的 JavaScript 程序。

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

      我相信答案是肯定的 Go 能够创建交互式网站,Go 能够从 http.Request 中读取数据,因此您可以通过您的 Go 代码定义一些高级 Go 编程接下来会发生什么.Go 本身在理论上被设计为一种 Web 服务器端编程语言,但它的输出媒介当然​​是 Web。

      【讨论】:

        【解决方案5】:

        我找到了我自己问题的长答案。使用 GopherJS(https://github.com/gopherjs/gopherjs)(它是从 Go 到 JS 的编译器)无法直接用 Go 直接编写交互式网站,而且 Go 非常有可能创建完全交互式的网站。 虽然这项工作是先进的,目前没有可用的信息(2018/09/25)

        感谢大家的努力(无论好坏)。

        谢谢你的这部分“对于前者,有 GopherJS。GopherJS 将 Go 代码编译为纯 Javascript 代码,所以它不是一个真正的 Web 框架,但你可以用它在 Go 中编写客户端代码。你仍然需要采取关心服务器端代码和它们之间的通信。”帮助分配,

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-19
          • 2017-11-08
          • 1970-01-01
          • 2012-08-04
          • 1970-01-01
          • 1970-01-01
          • 2012-05-19
          • 2021-05-18
          相关资源
          最近更新 更多