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

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

gin 模板渲染(静态文件应用,和公共模板引入)_第1张图片

 

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 }}

    效果图:

    gin 模板渲染(静态文件应用,和公共模板引入)_第2张图片

     

    你可能感兴趣的:(golang,gin,servlet)