我正在服务器上使用 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 应该不会太难。
关于javascript - 也运行在浏览器中的 Go 模板引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29519958/