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

标签 javascript go template-engine

我正在服务器上使用 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/

相关文章:

postgresql - 如何在 Go 应用程序中处理打开/关闭 Db 连接?

macos - go install 命令结果在 open/bin/palindrome : operation not permitted in mac

php - 使用 include 或 eval 自定义流包装器?

python - 我应该使用什么——Mako 还是 Django?

JavaScript 正则表达式模板 : only match when string inside brackets is equal

javascript - 添加新路由时出现错误,路由配置中需要路径

javascript - 当另一个 Firebase 函数已经在运行时再次发生 onCreate 事件时会发生什么?

javascript - django delete() 成功函数错误

javascript - 如何更改 jQuery UI 对话框的背景颜色?

mysql - 如何避免(处理)插入操作的死锁?