开源软件企业

简明优雅一步一步搞GOframe 第四天模板文件

2024/3/11 22:17:29

一、路由  s.BindHandler


   s.BindHandler("/:name"func(r *ghttp.Request){

      r.Response.Writeln("pattern: /:name match")

   })



二、模板文件 默认为resource/template 文件夹

上一节我们配置了 静态文件夹 resource/xxx 两种解决方案 



1  以静态文件夹为主采取 json访问接口方式 加载数据

 这种模式配置好pear后 只要pear中有对应的静态文件就可以 通过json获取数据

返回json的写法 这里要注意 layui 默认data格式  {"code": 0,"count": 1000,"data": [{}}

s.BindHandler("/news/listjson", func(r *ghttp.Request) {
md := dao.DboLNewss.Ctx(r.Context())
newss, err := md.All()
if err == nil {
r.Response.WriteJson(g.Map{
"code":  0,
"msg":   "",
"count": 1000,
"data":  newss,
})
}
})


2 以模板文件夹template为主 采用混编gf 标签语言 加载数据

这种模式需要 在gf 的controller中写路由然后调用模板


s.BindHandler("/news/list", func(r *ghttp.Request) {
md := dao.DboLNewss.Ctx(r.Context())
newss, err := md.All()
if err == nil {
r.Response.WriteTpl("news/list.html", g.Map{
"ncount": 2,
"newss":  newss})
}
})



此处的news/list.html 在 temple 文件夹中

数据用 gf 标签语言绑定



三、标签语言

        {{range $key, $value := .newss}}
        <tr>
            <td>{{$value.Title}}</td>
            <td>{{$value.ClassId}}</td>
            <td>{{$value.CreatTime}}</td>
    
            <td><a class="layui-btn layui-btn-xs" onclick="edit({{$value.NID}})" >编辑</a></td>
          </tr>
        {{end}}
       



补充 pear菜单配置有个   "openType": "_component",

这样 直接出来的页面不需要 引用  pear.css pear.js 直接用 比如 list.html

但是 list.html 弹出的 页面就需要 引用 样式和js 了