studygolang源码阅读问题(1)?

kekemuyu · · 303 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
#### 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开发这块经验还是不足,好多业务功能可能没做过。现在源码的整体架构大概明白,可能函数中的一些细节需要进一步阅读。 不知道大家是如何阅读源码的,可以分享一些经验吗?
303 次点击  
加入收藏 微博
5 回复  |  直到 2018-06-20 09:26:01
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传