gpt4 book ai didi

templates - 转到 HTML 模板 : Can I stop the templates package inserting quotes around strings in scripts?

转载 作者:IT王子 更新时间:2023-10-29 01:39:58 26 4
gpt4 key购买 nike

我的所有模板都有一个变量,指示其关联图像的根 url。我想在模板主体中的图像文件名之前输出该根目录,但是当我这样做时,模板包会尝试在其周围加上引号。这是显示我的问题的最小代码。 IMG_ROOT是本例中的一个接口(interface),可以更好的模拟真实代码。脚本类型是文本/模板,因为它的内容将在 underscore.js 模板中使用。不过,类型似乎并不影响它的输出方式。

package main

import (
"html/template"
"os"
)

type Data struct {
IMG_ROOT interface{}
}

const tmpl = `
<body>
<script type="text/template">
<img src="{{.IMG_ROOT}}/file_name.jpg"></img>
</script>
</body>

`

func main() {
t, _ := template.New("").Parse(tmpl)
t.Execute( os.Stdout, &Data{ template.JSStr( "/path/to/file" ) } )
}

http://play.golang.org/p/wg9JK2w2lt

如果我写 <img src="{{.IMG_ROOT}}/file_name.jpg"></img> , 我得到 "\/path\/to\/file/file_name.jpg"这是无效的。

如果我写 <img src={{.IMG_ROOT}}/file_name.jpg></img> , 我得到 "/path/to/file/"file_name.jpg这也不起作用。

有解决办法吗?我已经尝试使用 IMG_ROOT 类型的模板包中的每个“安全”类型,但没有任何运气。我可以编写一个连接并返回根和文件的函数,但似乎应该有一个更简单的解决方案。

有什么想法吗?

谢谢!

最佳答案

您可以使用 printf 内置函数:

<img src={{printf "%s/file_name.jpg" .IMG_ROOT}}></img>

http://play.golang.org/p/2v8Q6wHu0r

但相反,我建议创建一个自定义辅助函数并使用它来创建这样的路径:

const ImageRoot = "path/to/files/"

func StaticFile(filename string) string {
return ImageRoot + filename
}

func main() {
t, _ := template.New("").Funcs(template.FuncMap{"staticFile": StaticFile}).Parse(tmpl)
t.Execute(os.Stdout, nil)
}

然后在您的模板中您可以这样做

<img src="{{staticFile "image.jpg"}}"></img>

http://play.golang.org/p/NQTHmqNeT0

关于templates - 转到 HTML 模板 : Can I stop the templates package inserting quotes around strings in scripts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24411880/

26 4 0