本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1、下载gin软件包
go get -u github.com/gin-gonic/gin
2、引入代码
import "github.com/gin-gonic/gin"
3、引入 net/http 包(尽量引用)
import "net/http"
4、配置路由,新建main.go
5、渲染模板,定义路由
router.GET("/", func(c *gin.Context) { c.HTML(http.StatusOK, "default/index.html", map[string]interface{}{ "title": "前台首页" }
6、新建html
{{template default/index.html}} html内容 {{end}}
内容使用{{.name}}来展示数据 如果是数组,则使用循环{{range $key,$vlaue:=.name}} {{$vlaue}} {{end}}
如果为结构体: {{range $key,$vlaue:=.name}} {{$vlaue.结构体中的名字}} {{end}}
7、比较函数
eq 如果 arg1 == arg2 则返回真 ne 如果 arg1 != arg2 则返回真 lt 如果 arg1 < arg2 则返回真 le 如果 arg1 <= arg2 则返回真 gt 如果 arg1 > arg2 则返回真 ge 如果 arg1 >= arg2 则返回真
8、条件判断
{{if pipeline}} T1 {{end}} {{if pipeline}} 1 {{else}} 0 {{end}} {{if pipeline}} 1 {{else if pipeline}} 0 {{end}} {{if gt .score 60}} 及格 {{else}} 不及格 {{end}}
9、预定义函数 预定义的全局函数如下: ``` and 函数返回它的第一个 empty 参数或者最后一个参数;就是说"and x y"等价于"if x then y else x";所有参数都会执行;
or 返回第一个非 empty 参数或者最后一个参数; 亦即"or x y"等价于"if x then x else y";所有参数都会执行;
not 返回它的单个参数的布尔值的否定
len 返回它的参数的整数类型长度 index 执行结果为第一个参数以剩下的参数为索引/键指向 的值; 如"index x 1 2 3"返回 x[1][2][3]的值;每个被索引的主体必须是数组、切 片或者字典。
print 即 fmt.Sprint printf 即 fmt.Sprintf println 即 fmt.Sprintln html 返回与其参数的文本表示形式等效的转义 HTML。 这个函数在 html/template 中不可用。
urlquery 以适合嵌入到网址查询中的形式返回其参数的文本表示的转义值。这个函数在 html/template 中不可用。
js 返回与其参数的文本表示形式等效的转义 JavaScript。
call 执行结果是调用第一个参数的返回值,该参数必须是函数类型,其余参数作为调用该函数 的参数; 如"call .X.Y 1 2"等价于 go 语言里的 dot.X.Y(1, 2); 其中 Y 是函数 类型的字段或者字典的值,或者其他类似情况; call 的第一个参数的执行结果必须是函数类型的值(和预定义函数如print 明显不同);该函数类型值必须有 1 到 2 个返回值如果有 2 个则后一个必须是error 接口类型; 如果有 2 个返回值的方法返回的 error 非nil,模板执行会中断并返回给调用模板执行者该错误; 10、自定义模板 路由,写在静态路由(加载模板)上面
router.SetFuncMap(template.FuncMap{ "formatDate": formatAsDate, }) ``` 用法:
{{.now | formatDate}} 或者 {{formatDate .now }}