1. 首页
  2. 主题
  3. Go Web开发

studygolang源码阅读问题(1)?

kekemuyu · · 1411 次点击
#### 1.模板渲染问题 ```go // Render html 输出 func Render(ctx echo.Context, contentTpl string, data map[string]interface{}) error { if data == nil { data = map[string]interface{}{} } objLog := logic.GetLogger(ctx) contentTpl = LayoutTpl + "," + contentTpl // 为了使用自定义的模板函数,首先New一个以第一个模板文件名为模板名。 // 这样,在ParseFiles时,新返回的*Template便还是原来的模板实例 htmlFiles := strings.Split(contentTpl, ",") for i, contentTpl := range htmlFiles { htmlFiles[i] = config.TemplateDir + contentTpl } tpl, err := template.New("layout.html").Funcs(funcMap). Funcs(template.FuncMap{"include": tplInclude}).ParseFiles(htmlFiles...) if err != nil { objLog.Errorf("解析模板出错(ParseFiles):[%q] %s\n", Request(ctx).RequestURI, err) return err } data["pos_ad"] = logic.DefaultAd.FindAll(ctx, ctx.Path()) data["cur_time"] = times.Format("Y-m-d H:i:s") data["path"] = ctx.Path() data["filter"] = false if _, ok := filterPathes[ctx.Path()]; ok { data["filter"] = true } // TODO:每次查询有点影响性能 hasLoginMisson := false me, ok := ctx.Get("user").(*model.Me) if ok { // 每日登录奖励 hasLoginMisson = logic.DefaultMission.HasLoginMission(ctx, me) } data["has_login_misson"] = hasLoginMisson return executeTpl(ctx, tpl, data) } ``` tpl, err := template.New("layout.html").Funcs(funcMap). Funcs(template.FuncMap{"include": tplInclude}).ParseFiles(htmlFiles...) 上边这个函数不太明白,这个最后应该是渲染一个完整的html界面吧,看完后还是不清楚如何将layout.html和里面的content模块组合在一起的。 #### 2.帖子分页问题 主题帖子分页查找----->显示的流程不太清楚,主要是model里定义的数据结构没有解释,虽然从名称大概能看出什么意思。现在刚开始看,心里是有点恐惧的,主要是web开发这块经验还是不足,好多业务功能可能没做过。现在源码的整体架构大概明白,可能函数中的一些细节需要进一步阅读。 不知道大家是如何阅读源码的,可以分享一些经验吗?
<a href="/user/polaris" title="@polaris">@polaris</a> 手动帮你艾特下站长
#2
更多评论
polaris
社区,需要你我一同完善!
你看下 layout.html 文件中的 `template content`,它就是串联起模板! 其实这个社区分几块:主题、文章、项目、资源等,一方面你看懂了整个架构;另一方面,可以关注下首页,然后看下主题这块,应该就大体弄懂了。
#1
polaris
社区,需要你我一同完善!
<a href="/user/Marblues" title="@Marblues">@Marblues</a> 我刚回复~哈哈哈哈
#3

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中