go gin使用template Static配置静态文件 返回json 自定义函数 转义 LoadHTMLGlob LoadHTMLFiles

详细代码git

package main

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

func main() {
	mainGin()
}

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

	//为静态文件做映射,通过 项目url地址/cssjs 访问./static下的静态文件
	r.Static("/cssjs","./static")

	//设置自定义函数
	r.SetFuncMap(template.FuncMap{
		"safe": func(s string) template.HTML {
			return template.HTML(s)
		},
		"sqr": func(i int) int {
			return i * i
		},
	})

	// 读取模板文件1
	// r.LoadHTMLGlob("template/**/*")
	// r.LoadHTMLGlob("./template/**/*")
	//template/**/*似乎不读取template里的文件,template/tmpl转义.html没读到
	// 读取模板文件2
	r.LoadHTMLFiles(
		"./template/tmpl转义.html",
		"./template/tmpl基本语法.go.tmpl",
		"./template/test1/block.tmpl",
		"./template/test1/useblock.tmpl",
		"./template/test1/js.html")

	//处理url请求
	r.GET("/a1", func(c *gin.Context) {
		// 参数1:响应码,参数2:模板名,参数3:要传递给页面的参数
		c.HTML(http.StatusOK, "useblock.tmpl", nil)
	})
	r.GET("/a2", func(c *gin.Context) {
		c.HTML(http.StatusOK, "tmpl转义.html", gin.H{
			"msg1": "",
			"msg2": "",
		})
	})

	//返回json方法1,key首字母可以小写
	r.GET("/j1", func(c *gin.Context) {
		c.JSON(http.StatusOK,gin.H{
			"name":"kitty",
			"age":3,
		})
	})

	//返回json方法2,key首字母必须大写
	r.GET("/j2", func(c *gin.Context) {
		// 首字母大写才能显示在页面上,
		type user struct{
			//`json:"usernane"`指定json返回的key 是 username
			Name string	`json:"usernane"`
			//不显示首字母小写的字段
			age int8
			Weight float32
		}
		u:=user{"kitty2",4,1.23}
		//页面显示{"usernane":"kitty2","Weight":1.23}
		c.JSON(http.StatusOK,u)
	})
	r.Run(":8080")
}
//template\tmpl转义.html
DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>
    <link rel="stylesheet"  href="/cssjs/css/a.css">
    <script src="/cssjs/js/jquery.min.js">script>
head>
<body>
    <div class='a'>aaaadiv>
    {{.msg1}}<br>
    {{.msg2 | safe}}<br>
body>
html>

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