如何将基本模板扩展到其他模板

How to extend a base template to other templates

如何扩展基础 html 文件,例如:

base.html

<!DOCTYPE html>
    <html>
    <head>
        <title>My Site</title>
    </head>
    <body>
   <!-- insert html here -->
    </body>
    </html>

然后创建一个继承该基本模板的页面,在 Python Jinja2 中我会这样做:

main.html

{{ extend "base.html" }}

main.html 现在拥有 base.html 的所有 HTML。然后只要我在我的 base.html 文件中定义了一个区域来插入 html 到我可以从 main.html 做到这一点,在 Jinja2 中它看起来像:

base.html

    <!DOCTYPE html>
    <html>
    <head>
        <title>My Site</title>
    </head>
    <body>
   {{ block "body" }}

   {{ endblock }}
    </body>
    </html>

然后在 main.html

{{ extend "base.html" }}
{{ block "body" }}
<h1>Title</h1>
{{ endblock }}

我想不出在任何 Go 框架中执行此操作的方法。他们似乎都说要 'define' 一个模板然后将 HTML "components" 插入其中,我想走另一条路并定义一个基础 HTML 文件并将其继承到我的其他 HTML 个文件可以作为基础,是否有意义?

使用这些模板。

base.html:

<!DOCTYPE html>
<html>
<head>
<title>My Site</title>
</head>
<body>
{{block "body" $}}{{end}}
</body>
</html>`

main.html:

{{define "body"}}<h1>Title</h1>{{end}}

使用标准库模板包按扩展顺序解析模板;

t := template.Must(template.ParseFiles(
     "base.html", 
     "main.html"))

执行生成的模板。

Run it on the playground