我试过好像只能在当前目录下使用,
如果将 define 定义的模板放到其他文件夹 如何使用呢?
下面代码中,如果将两个文件放到同一目录下是可以使用的,但在不同文件夹中就不能使用了,请问这要如何做呢?
文件位置:tempalte/meta.html
{{define "meta"}}
<head>
<meta charset="UTF-8">
<title>Hello</title>
<link rel="stylesheet" href="/resource/css/globals.css"/>
</head>
{{end}}
文件位置:template/sys/menu.html
<!DOCTYPE html>
<html lang="en">
{{template "meta" .}}
<body>
</body>
</html>
1
MeetTheFuture 2022-02-17 09:43:26 +08:00
templates/**/*
|
2
sciel OP @MeetTheFuture what? `{{template "/nav" .}}` 加路径吗? 也不行的。
如果不能用 define 只能用 include ,用 include 就必须新创建一个文件。。 |
3
Gota 2022-02-17 20:06:13 +08:00
可以手动写个函数载入模板, 就可以按文件名引用了.
默认的载入方式只认文件的 baseName, 同名的会被覆盖掉. ``` go func New(root fs.FS, plugins ...Plugin) (_ Template, err error) { tmpl := template.New(".") names, err := fs.Glob(root, "*.tmpl") if err != nil { return nil, err } for _, name := range names { var data []byte if data, err = fs.ReadFile(root, name); err != nil { return } if tmpl, err = tmpl.New(name).Parse(string(data)); err != nil { return } } return tmpl, nil } ``` |