也运行在浏览器中的 Go 模板引擎

Go templating engine that also runs in the browser

我正在服务器上使用 Go 开发 Web 应用程序,路由器将使用 PushState,因此服务器还必须能够呈现我的模板。这意味着我需要一个与 Go 和 Javascript 一起工作的模板引擎。到目前为止,我遇到的唯一一个是 Mustache,但它似乎无法处理结构的小写属性,而且似乎也无法提供自定义名称,例如 JSON :

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

那么,是否有一个模板引擎在 Go 和 JavaScript 中都可用,并且可以处理小写结构属性?

正如上面的评论所述,您不能指望任何第 3 方库能够读取您的结构上的小写属性,但您似乎正在尝试使用标签来表示您的结构的替代表示形式(因为您可以使用 encoding/json 库)。

你可以做的是使用 github.com/fatih/structs 之类的东西将你的结构转换为映射,然后通过范围将你的所有键小写(复制值并删除大写版本)并将其传递给 mustache.Render() 作为你的上下文。如果你想像 encoding/json 库那样使用结构标签,你必须使用 reflect 包并编写一个 struct-to-map 函数来考虑结构上的标签(基本文档中给出的示例 here)。有一些关于如何使用反射编写结构到映射函数的 SO 答案,您可以根据需要对其进行改进以添加结构标记处理。

为了回答你的问题,我不认为这是当前模板库所做的也适用于 javascript 的事情,但考虑到上述想法,使用 mustache 应该不会太难.