模板渲染语言

模板语言:

1.if 

• not
{{if not .condition}} 

{{end}}

• and
{{if and .condition1 .condition2}} 

{{end}}

 

• or
{{if or .condition1 .condition2}} 

{{end}}

• eq 等于
{{if eq .var1 .var2}} 

{{end}}

• ne 不等于
{{if ne .var1 .var2}} 

{{end}}

• lt ⼩于 (less than)

{{if lt .var1 .var2}} 

{{end}}

• le ⼩于等于
{{if le .var1 .var2}} 

{{end}}

• gt ⼤于
{{if gt .var1 .var2}} 

{{end}}

• ge ⼤于等于
{{if ge .var1 .var2}} 

{{end}}

2.{{.}}

<html>
<head>
</head>
<body>
<p>hello, old man, {{.}}</p>
</body>
</html>

 

3.{{with .Var}}

<html> <head>
</head>
<body>
{{with .Name}}
<p>hello, old man, {{.}}</p>
{{end}}
</body>
</html>

4.循环

<html>
<head>
</head>
<body>
{{range .}}
{{if gt .Age 18}}
<p>hello, old man, {{.Name}}</p>
{{else}}
<p>hello,young man, {{.Name}}</p>
{{end}}
{{end}}
</body>
</html>

 .   代表了传进去的对象

例:

1.if 渲染模板到终端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main
import (
    "fmt"
    "text/template"
    "os"
)
type Person struct{
    Name string
    Age int
}
func main(){
    t,err := template.ParseFiles("index.html"//从index.html中读取内容,并生成模板。
    if err != nil {
        fmt.Println("parse file error:",err)
        return
    }
    p := Person{
        Name:"whj",
        Age:17,
    }
    if err := t.Execute(os.Stdout,p);err != nil {  //把渲染的模板内容打印到终端
        fmt.Println("there was an error:",err.Error)
    }
 
}

  index.html

1
2
3
4
5
6
7
8
9
10
11
<html>
    <head>
    </head>
    <body>
    {{if gt .Age 18}}
    <p>hello, old man, {{.Name}}</p>
    {{else}}
    <p>hello,young man, {{.Name}}</p>
    {{end}}
    </body>
</html>

  运行结果:

2.if  渲染模板到网页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package main
import (
    "fmt"
    "text/template"
    // "os"
    "net/http"
)
type Person struct{
    Name string
    Age int
}
var tem *template.Template
func init(){
    t,err := template.ParseFiles("index.html"//从index.html中读取内容,并生成模板,把生成模板单独提取出来,利用init函数自动执行生成模板
    if err != nil {
        fmt.Println("parse file error:",err)
        return
    }
    tem = t           //利用全局变量保存生成的模板,方便使用
}
func user_info(w http.ResponseWriter,r *http.Request){
    p := Person{
        Name:"whj",
        Age:17,
    }
    if err := tem.Execute(w,p);err != nil {  //把渲染的模板内容写到网页
        fmt.Println("there was an error:",err.Error)
    }
}
func main(){
    http.HandleFunc("/user_info",user_info)
    err:=http.ListenAndServe(":8080",nil)
    if err != nil {
        fmt.Println("http listen failed err:",err)
    }
    /*
    t,err := template.ParseFiles("index.html")  //从index.html中读取内容,并生成模板。
    if err != nil {
        fmt.Println("parse file error:",err)
        return
    }*/
     
 
}

  查看结果:

3. {{ . }} 渲染

index.html:

1
2
3
4
5
6
7
8
9
10
11
<html>
    <head>
    </head>
    <body>
    {{if gt .Age 18}}
    <p>hello, old man, {{.}}</p>
    {{else}}
    <p>hello,young man, {{.}}</p>
    {{end}}
    </body>
    </html>

  查看运行结果:

.   代表了传进去的对象

4. with

index.html

1
2
3
4
5
6
7
8
9
<html>
    <head>
    </head>
    <body>
        {{with .Name}}
        <p>hello, old man, {{.}}</p>  //这一行中的点代表了  .Name
        {{end}}
    </body>
    </html>

  查看结果 :

5.循环

range:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package main
import(
    "fmt"
    "text/template"
    "net/http"
)
var t1 *template.Template
func init(){
    t,err := template.ParseFiles("index.html")
    if err != nil {
        fmt.Println("paser file err",err)
        return
    }
    t1 = t
}
type Person struct{
    Name string
    Age int
}
func FormServer(w http.ResponseWriter, r *http.Request){
    // p := Person{Name:"Mary",Age:23}
    var stu []*Person     //生成切片,循环切片
    for i:=0;i<5;i++{
        stu1:=&Person{
            Name:string(i),
            Age:i*5,
 
        }
        stu=append(stu,stu1)   //生成切片
    }
    t1.Execute(w,stu)      //把切片传入模板
}
func main(){
    http.HandleFunc("/userinfo",FormServer)
    http.ListenAndServe(":8080",nil)
}

  index.html:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
    <head>
    </head>
    <body>
    {{range .}}
    {{if gt .Age 18}}
    <p>hello, old man, {{.Name}}</p>
    {{else}}
    <p>hello,young man, {{.Name}}</p>
    {{end}}
    {{end}}
    </body>
<html>
    

  查看运行结果:

 

posted @   whj999  阅读(394)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示