1 回答

TA贡献1802条经验 获得超6个赞
您可以将 Javascript 代码插入到<head>您创建 Javascript 变量的 HTML 页面(例如,在该部分中),并使用传递给模板执行的参数初始化它们。
看这个例子:
func main() {
t := template.Must(template.New("").Parse(templ))
m := map[string]interface{}{
"title": "Test page",
"username": "bob",
"counter": 12,
}
if err := t.Execute(os.Stdout, m); err != nil {
panic(err)
}
}
const templ = `<html><head>
<script>
var _title = {{.title}};
var _username = {{.username}};
var _counter = {{.counter}};
</script>
</head><body>
</body>
</html>`
这会生成一个 HTML 文档(在Go Playground上试试):
<html><head>
<script>
var _title = "Test page";
var _username = "bob";
var _counter = 12 ;
</script>
</head><body>
</body>
</html>
这意味着页面中的其他 Javascript 代码(内联或引用的,外部的)将看到变量_title,并将它们用作常规变量,并使用我们传递给的值初始化_username它们。_counterTemplate.Execute()
请注意,该html/template包执行上下文转义。看到它{{.title}}在引号中插入了结果,因为它是 a string,这就是它应该用 Javascript 代码编写的方式,但是在插入 的结果时没有添加引号{{.counter}},因为它是 type 的值int。
另请注意,您应该使用唯一的命名策略以避免与现有变量或可能在其他 Javascript 代码中使用的变量发生冲突。通常一个特殊的前缀(或后缀)会这样做。
- 1 回答
- 0 关注
- 323 浏览
添加回答
举报