Loading

go_test2

package main

import (
	"github.com/gin-gonic/gin"
	"html/template"
	"net/http"
	"time"
)

type Address struct {
	Mobile string
	Email  string
}

type News struct {
	Title   string
	Content string
}

func FormatUnixTime(unixtime int64) string {
	// 纳nano 纳米nanometer 纳秒nanosecond
	unixtimeObj := time.Unix(unixtime, 0) // 秒 纳秒 将int64类型的时间戳转为Time对象
	ret := unixtimeObj.Format("2006-01-02 15:04:05")
	return ret
}

func main() {
	r := gin.Default()

	// 8.自定义模板函数
	// r.SetFuncMap要在r.LoadHTMLGlob之前
	r.SetFuncMap(template.FuncMap{
		"FormatUnixTime": FormatUnixTime,
	})

	// 0.加载templates文件夹下所有子文件夹下的文件
	// **是一个通配符,表示匹配任意数量的子目录。* 表示匹配任意字符
	r.LoadHTMLGlob("templates/**/*")

	// 9.配置静态web目录:配置后可访问静态资源
	// relativePath翻译:相对路径
	// 第一个参数是网址,第二个是静态资源的根目录(映射目录)
	r.Static("/static", "./static")

	// 1.map嵌套结构体
	// 2.templates下的文件夹下的html如何引入,define-end定义模板名称
	// 3.将后台数据赋值给模板中变量
	r.GET("/home", func(c *gin.Context) {
		c.HTML(200, "default/home.html", gin.H{
			"name":     "张艺卓",
			"password": "123",
			"address": &Address{
				Mobile: "15239889618",
				Email:  "2694551335@qq.com",
			},
		})
	})

	// 4.模板中if-else-end
	/*
		eq如果 arg1 == arg2 则返回真
		ne如果 arg1!=arg2则返回真
		lt如果 arg1< arg2 则返回真
		le如果 arg1<= arg2则返回真
		gt如果arg1>arg2则返回真
		ge如果 arg1 >= arg2 则返回真
	*/
	r.GET("/admin/home", func(c *gin.Context) {
		c.HTML(200, "admin/home.html", map[string]interface{}{
			"name":     "卓卓",
			"password": "123",
			"score":    80,
		})
	})

	// 5.模板中循环数据,循环结构体,还有range-else-end。
	//  ,正常有值循环,当循环体为空时走else
	r.GET("/news", func(c *gin.Context) {
		c.HTML(http.StatusOK, "default/news.html", gin.H{
			"news": []News{
				News{
					"新闻1",
					"内容1",
				},
				News{
					"新闻2",
					"内容2",
				},
				News{
					"新闻3",
					"内容3",
				},
			},
			"slice": []int{},
		})

	})

	// 6.with-end解构结构体,赋值给.
	r.GET("/admin/news", func(c *gin.Context) {
		c.HTML(200, "admin/news.html", gin.H{
			"news": News{
				"标题1",
				"新闻1",
			},
		})

	})

	// 7.模板函数,自定义模板函数
	r.GET("/template_func", func(c *gin.Context) {
		var timeObj = time.Now()
		var unixtime = timeObj.Unix() // int64
		c.HTML(200, "default/template_func.html", gin.H{
			"slice":    []int{1, 2, 3, 4, 5},
			"string":   "张艺卓",
			"unixtime": unixtime,
			// 加载templates文件夹下所有子文件夹下的文件"string": "张艺卓",
		})
	})

	// 8.模板嵌套,静态文件
	r.GET("/test", func(c *gin.Context) {
		c.HTML(200, "default/test.html", gin.H{})
	})

	// 更改端口
	r.Run(":8081")

}

posted @ 2024-10-25 15:30  一只大学生  阅读(4)  评论(0编辑  收藏  举报