通过 Golang 中的模板解析自定义变量
Posted
技术标签:
【中文标题】通过 Golang 中的模板解析自定义变量【英文标题】:Parse Custom Variables Through Templates in Golang 【发布时间】:2017-10-08 13:11:09 【问题描述】:我是否可以在模板文件$title := "Login"
中设置一个变量,然后将其解析到另一个使用template "header" .
包含的文件?
我正在尝试的示例:
header.tmpl
define "header"
<title>.title</title>
end
login.tmpl
define "login"
<html>
<head>
$title := "Login"
template "header" .
</head>
<body>
Login Body!
</body>
</html>
end
我怎样才能将这个自定义的 $title 变量解析到我的标题模板中?
【问题讨论】:
【参考方案1】:正如@zzn 所说,不可能从一个模板中引用另一个模板中的变量。
实现您想要的一种方法是定义一个模板——它将从一个模板传递到另一个模板。
header.html
define "header"
<title>template "title"</title>
end
login.html
define "title"Loginend
define "login"
<html>
<head>
template "header" .
</head>
<body>
Login Body!
</body>
</html>
end
您还可以在调用“标题”模板(template header $title
甚至template header "index"
)时将标题作为管道传递,但这会阻止您向该模板传递任何其他内容。
【讨论】:
可能是最接近我正在寻找的东西。谢谢! :)【参考方案2】:不,不可能将变量解析到另一个文件。
根据this:
变量的作用域扩展到声明它的控制结构(“if”、“with”或“range”)的“结束”操作,如果没有这样的控制,则扩展到模板的末尾结构体。 模板调用不会从其调用点继承变量。
【讨论】:
有没有其他方法可以做我正在尝试的事情? 在golang中定义title
变量,传递给template.Execute
函数。
我能想到的唯一其他方法是将header.tmpl
包含在template "header" "Title Here"
中,然后在header.tmpl
中我可以使用.
来访问该标题。唯一的问题是,如果我可以添加描述或其他一些数据(仅通过模板)会很好
其他人正在寻找答案...查看technosophos.com/2013/11/23/… - 对我来说最好的方法是创建两个单独的函数:get
和 set
用于定义全局可访问的变量。跨度>
以上是关于通过 Golang 中的模板解析自定义变量的主要内容,如果未能解决你的问题,请参考以下文章
Golang 模板 - 使用模板变量作为范围循环内的全局变量
第268天学习打卡(知识点回顾 springboot视图解析和模板引擎)