如何为GinGoLang中的特定端点组织功能图?

问题描述

TL; DR

我想知道如何为go模板组织功能映射,这些模板依赖于被调用的特定端点中获取的数据。

问题

我有一个主要的前端端点(用于CMS),它将捕获页面的信息,然后从模型中获取它的发布数据。我还有一个模板包,其中包含模型,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?还是有必要?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)