我的项目中有两个模板,如下所示:

我不懂如何构造代码,所以我有了HTML模板(在头上带有,并带有一个头),只是将这些模板包括在主体中。

我也不太了解构造代码以使模板与处理程序匹配的最佳实践。 从IIUC开始,您需要最好在处理程序外部编译模板。


您应该知道的是,值template.Template可以是多个模板的集合,请参见其Template.Templates()方法返回此集合。

集合中的每个模板都有一个唯一的名称,可以使用它来引用(请参见Template.Name())。并且有一个{{template"name" pipeline}}动作,使用该动作,您可以在模板中包括其他模板,该模板是集合的一部分。

请参阅此示例。让我们定义2个模板:

如您所见,tmain包含另一个名为"content"的模板。您可以使用Template.New()方法(强调:方法,不要与func Template.New()混淆)来创建新的关联命名模板,该模板将成为您要调用其方法的模板的一部分。结果,它们可以相互参照,例如。他们可以互相包括在内。

让我们看一下将这两个模板解析为一个template.Template的代码,以便它们可以相互引用(为简便起见,省略了错误检查):

输出(在Go Playground上尝试):

另类

还要注意,如果您有许多更大的模板,那么它的可读性和可维护性就会降低。您应该考虑将模板另存为文件,并且可以使用template.ParseFiles()template.ParseGlob(),这两个文件可以一次解析多个文件,它们可以根据它们构建模板集合,因此它们可以相互引用。模板的名称将是文件的名称。