Function 如何组织Gin(GoLang)中特定端点的函数映射? TL;博士

Function 如何组织Gin(GoLang)中特定端点的函数映射? TL;博士,function,go,templates,view,content-management-system,Function,Go,Templates,View,Content Management System,我想知道如何组织go模板的函数映射,这些模板依赖于在被调用的特定端点中获得的数据 问题 我有一个主要的前端端点(对于CMS),它将抓取页面的slug,然后从模型中获取post数据。我还有一个模板包,它接受模型、post数据和gin上下文。 目前正在使用GoView。但是我将HTMLRender设置为每次点击页面时都会有一个新的ginview,这可能对性能没有好处,我想知道是否有更简洁的方法 // Serve the front end website func (c *FrontendContr

我想知道如何组织go模板的函数映射,这些模板依赖于在被调用的特定端点中获得的数据

问题 我有一个主要的前端端点(对于CMS),它将抓取页面的slug,然后从模型中获取post数据。我还有一个模板包,它接受模型、post数据和gin上下文。 目前正在使用GoView。但是我将HTMLRender设置为每次点击页面时都会有一个新的ginview,这可能对性能没有好处,我想知道是否有更简洁的方法

// Serve the front end website
func (c *FrontendController) Serve(g *gin.Context) {
    path := g.Request.URL.Path
    post, err := c.models.Posts.GetBySlug(path)

    if err != nil {
        NoPageFound(g)
        return
    }

    tf := templates.NewFunctions(g, c.models, &post)
    c.server.HTMLRender = ginview.New(goview.Config{
        Root:      paths.Theme(),
        Extension: config.Template["file_extension"],
        Master:    "/layouts/main",
        Partials:  []string{},
        DisableCache: true,
        Funcs: tf.GetFunctions(),
    })

    r := ResourceData{
        Post: post,
    }

    g.HTML(200, config.Template["template_dir"] + "/" + post.PageTemplate, r)
}
模板 例如,一些模板功能包括获取文章的字段和作者,以及查看用户是否登录

func (t *TemplateFunctions) isAuth() bool {
   ...
}
还有一些模板函数没有绑定到
gin.context
,例如获取资产路径

func (t *TemplateFunctions) assetsPath() string {
    ...
}
问题
  • 是否有方法将依赖数据的函数与全局函数合并
  • 有没有一种方法可以设置模板函数,而不必在每次点击页面时重新声明HTMLRender?还是有必要