也运行在浏览器中的 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 应该不会太难.
我正在服务器上使用 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 应该不会太难.