如何解决如何为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 举报,一经查实,本站将立刻删除。