【问题标题】:How to integrate Golang backend and Javascript (three.js) frontend?如何集成 Golang 后端和 Javascript (three.js) 前端?
【发布时间】:2014-08-23 23:59:30
【问题描述】:

我想使用我最喜欢的编程语言 Golang 编写一个 3D 应用程序。但是,我不希望直接使用原生 OpenGL 作为图形前端,因为这将需要比我愿意容忍的更大的学习曲线。此外,我真的不想使用像 go:ngine 这样的 Golang 游戏引擎。

在做了一些研究之后,我发现了令人惊叹的 WebGL Javascript 库 three.js,我非常感兴趣,以至于我在几个小时内完成了介绍性的 Javascript 课程。我根本不是一个真正的网络开发人员,所以我想知道主要用 Go 编写我的应用程序但使用 three.js 前端有多实用。

一些具体问题:

  • 像这样使用 Javascript/three.js 作为 Golang 服务器的前端是否值得/实用?
  • 如果值得的话,我在哪里可以学习如何将两者干净地结合起来?
  • 如果真的不值得,我有哪些替代方案?

谢谢,感谢任何回复。

编辑:

您是否计划在 Go 中对几何图形进行实时操作,并使用 Websockets 与您的 Javascript 层进行通信?

是的,这就是我现在的想法。我打算让我的(Golang)程序根据用户的一些参数生成顶点和三角形流。每个“结构”都是在用户提供参数后一次性生成的(我在 Javascript 前端看到滑块+输入框)。

以下是 Go 程序可能生成的示例,绘制在 GNUPlot 中:
(来源:alexozer.com

如果是这种情况,你有点低估了 Javascript。您应该使用 Javascript 编写大部分应用程序,并将 Go 用作经典的后端服务层,例如用户帐户、持久状态等。

我可以这样做,除了以下原因:

  • 核心生成过程从根本上依赖于 Goroutine 和通道
  • 我对 Web 开发几乎一无所知,包括前端和后端

所以我想我是在询问以下三种可能性之一的实现细节:

  • 用 JS 编写大部分程序,包括生成器,用 Go 编写最小的后端
  • 用 Go 编写大部分程序,并将 JS 用作图形前端
  • 还有别的吗?
  • 【问题讨论】:

      标签: javascript 3d go three.js


      【解决方案1】:

      我建议省略整个 Websocket 方面,因为它只是一种可能的优化(甚至可能不是)。

      如果你需要依赖 Go 的并发模型,那就去吧,在 Go 中编写你的组件,然后在 Go 中使用来自 HTML 请求的参数的 Web 服务器,使用它们来计算结果并将数据发送回JSON 格式。

      在前端,您将只专注于在用户更改参数时发送此请求以及显示 JSON 数据,您可以立即使用 ThreeJS。

      不过,您仍然需要学习一些 Web 开发和 Javascript。但是,嘿,他们说网络就是未来 ;-)

      我认为这是适合您的情况的方法,因为您的应用程序以非常严格的请求结果方式运行。

      【讨论】:

      • 对我来说听起来像是一个计划;我不介意(最终)学习一点 Web 开发。你认为 HTML、CSS 和 Javascript 会因为这样的事情而削减它,还是我需要关注更一般的东西?
      • 这就是你所需要的。确保你专注于你的核心问题。首先尝试一个简单的 ThreeJS 设置。然后看看如何通过 Javascript 向简单的 Go 服务器发出基本的 AJAX 请求。
      【解决方案2】:

      您的问题的答案很大程度上取决于您计划在 Go 组件和 Javascript 组件之间划清界限的确切位置。从您描述问题的方式来看,我觉得您想用 Go 编写大部分应用程序并仅将 JS 用作显示层?我不建议这样做。

      重新表述我的问题:您是否计划在 Go 中对几何图形进行操作,可能是实时操作并使用 Websockets 与您的 Javascript 层进行通信?如果是这种情况,你有点低估了 Javascript。您应该使用 Javascript 编写大部分应用程序,并将 Go 用作经典的后端服务层,例如用户帐户、持久状态等。

      如果我知道你到底打算做什么,我也许可以给出更具体的答案。

      【讨论】:

      • 根据您的输入更新了我的问题
      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      • 2016-09-03
      • 2022-06-30
      • 2018-12-06
      • 1970-01-01
      相关资源
      最近更新 更多