• gin 模板渲染(静态文件应用,和公共模板引入)


    首先奉上我的项目目录结构

     

    main.go

    package main
    
    import (
       "fmt"
       "github.com/gin-gonic/gin"
       "html/template"
       "net/http"
       "time"
    )
    
    type Article struct {
       Title string
       Content string
    }
    
    func UnixToTime(timestamp int) string {
       fmt.Println(timestamp)
       t :=time.Unix(int64(timestamp),0)
       return t.Format("2006-01-02 15:04:05")
    }
    
    func Println(str1 string,str2 string) string{
       //fmt.Println(str1,str2)
       return str1+"---------"+str2
    }
    
    func main()  {
       r := gin.Default()
       //r.LoadHTMLFiles()
       //自定义模板函数 注意要办这个函数放在加载模板前
       r.SetFuncMap(template.FuncMap{
          "UnixToTime":UnixToTime,
          "prt":Println,
       })
    
       //加载模板放在配置路由上面
       r.LoadHTMLGlob("view/**/*")
    
       //配置加载静态文件目录
       r.Static("/static","./static")
       //前端
       r.GET("/", func(c *gin.Context) {
          c.HTML(http.StatusOK,"web/index.html",gin.H{
             "title":"首页sss",
             "sort" : 55,
             "list" : []string{"我是谁","我是我","我是人","我是个好人你信吗?"},
             "newlist":[]interface{}{
                &Article{
                   Title:"新闻标题1",
                   Content:"新闻内容1",
                },
                &Article{
                   Title:"新闻标题2",
                   Content:"新闻内容2",
                },
             },
             "date" :1660274555,
          })
    
       })
       r.GET("/news", func(c *gin.Context) {
          a:= &Article{
             Title:"新闻标题",
             Content:"新闻内容",
          }
          c.HTML(http.StatusOK,"web/news.html",gin.H{
             "title":"新闻页面",
             "news":a,
          })
    
       })
       r.GET("/with", func(c *gin.Context) {
          a:= &Article{
             Title:"新闻标题",
             Content:"新闻内容",
          }
          c.HTML(http.StatusOK,"web/with.html",gin.H{
             "title":"新闻页面",
             "news":a,
          })
    
       })
    
       //后端
       r.GET("/admin", func(c *gin.Context) {
          c.HTML(http.StatusOK,"admin/index.html",gin.H{
             "title":"首页sss",
          })
    
       })
       r.GET("/admin/news", func(c *gin.Context) {
          a:= &Article{
             Title:"新闻标题",
             Content:"新闻内容",
          }
          c.HTML(http.StatusOK,"admin/news.html",gin.H{
             "title":"新闻页面",
             "news":a,
          })
    
       })
    
       r.Run()
    }

    web/index.html

    
    {{ define "web/index.html" }}
    
    
    
    
        
        
        
        document
        
    
    
        
        {{template "public/page_header.html" .}}
    
        

    {{.title}}

    {{$t := .title}}

    {{$t}}

    {{if ge .sort 60}}
    及格
    {{else}}
    不及格
    {{end}} {{range $key,$value := .list}}
  • key=>{{$key}}-----value=>{{$value}}
  • {{end}}
    {{range $key,$value := .newlist}}
  • key=>{{$key}}-----value.Title=>{{$value.Title}}-------value.Content=>{{$value.Content}}
  • {{end}}

    {{len .title}}
  • 原样输出:{{.date}}
  • 自定义函数输出:{{UnixToTime .date}}
  • 自定义函数prt输出:{{prt .title .title}}
  • {{template "public/page_footer.html" .}}
    {{ end }}

    public/page_footer.html

    
    {{ define "public/page_footer.html" }}
    
        
        

    我是一个公共的底部

    {{ end }}

    public/page_header.html

    
    {{ define "public/page_header.html" }}
    
        
        

    我是一个公共的标题

    {{ end }}

    效果图:

     

  • 相关阅读:
    前端实现文件预览(pdf、excel、word、图片)
    20240229金融读报:央行阿拉善创新融资模式与碳排放权交易条例实施,新春政策聚焦新生产力及金融风险防范
    连锁零售门店固定资产管理的痛点及解决方案
    C---指针
    java 访问sqlserver 和 此驱动程序不支持jre1.8错误
    报道 | 国内外运筹优化会议精选
    为什么你的shopee虾皮店铺越做越垮?极有可能是这三点没做好?
    软考能评职称吗?怎么评?
    Day10:基础入门-HTTP数据包&Postman构造&请求方法&请求头修改&状态码判断
    量子计算深化:大规模量子计算(相关论文108篇推荐)
  • 原文地址:https://blog.csdn.net/yqymzj/article/details/126303772