zoukankan      html  css  js  c++  java
  • template模板

    一、template模板案例

    1、解析字符串

    package main
    
    import (
    	"log"
    	"os"
    	"text/template"
    )
    
    func main() {
    	//Default返回一个默认的路由引擎
    	txt := `{{ . }}`
    	data := "james"
    
    	//创建模板
    	tpl := template.New("txtTemplate")
    
    	tpl, err := tpl.Parse(txt)
    	if err != nil {
    		log.Fatal(err)
    	}
    
    	//执行输出到控制台
    	err = tpl.Execute(os.Stdout, data)
    	//fmt.Println(err)
    }
    

    2、携带if else

    func main() {
    	//Default返回一个默认的路由引擎
    	txt := `{{ if . }}
    	true
    	{{ else }}
    	无内容
    	{{end}}
    	`
    	data := true
    
    	//创建模板
    	tpl := template.New("txtTemplate")
    
    	tpl, err := tpl.Parse(txt)
    	if err != nil {
    		log.Fatal(err)
    	}
    
    	//执行输出到控制台
    	err = tpl.Execute(os.Stdout, data)
    	//fmt.Println(err)
    }
    //输出true

    3、index索引

    func main() {
    	//Default返回一个默认的路由引擎
    	txt := `{{ index . 2}}`
    	data := []int{2, 2, 3, 4}
    
    	//创建模板
    	tpl := template.New("txtTemplate")
    
    	tpl, err := tpl.Parse(txt)
    	if err != nil {
    		log.Fatal(err)
    	}
    
    	//执行输出到控制台
    	err = tpl.Execute(os.Stdout, data)
    	//fmt.Println(err)
    }

    4、range遍历

    package main
    
    import (
    	"log"
    	"os"
    	"text/template"
    )
    
    func main() {
    	//Default返回一个默认的路由引擎
    	//range 中,表示遍历的每一个元素,输出的是值
    	txt := `{{ range . }}
    	  {{ . }}
    	{{ end }}     
    	`
    	//输出k,v
    	txt1 :=`{{ range $i,$v := . }}
    	{{ $i }}: {{ $v }}
        {{ end }}     
        `
    	data := []int{2, 2, 3, 4}
    
    	//创建模板
    	tpl := template.New("txtTemplate")
    
    	tpl, err := tpl.Parse(txt)
    	if err != nil {
    		log.Fatal(err)
    	}
    
    	//执行输出到控制台
    	err = tpl.Execute(os.Stdout, data)
    	//fmt.Println(err)
    }
    

    5、对结构体操作

    package main
    
    import (
    	"log"
    	"os"
    	"text/template"
    )
    
    type User struct {
    	ID   string
    	Name string
    }
    
    func main() {
    	//Default返回一个默认的路由引擎
    	txt := `
    	<table>
    	   <thead>
    	      <tr>
    		     <th>ID</th>
    	         <th>Name</th>
    		  </tr>
    		</thead>
    		<tbody>
    		{{ range . }}
    		     <tr>
    			     <td>{{ .ID }}</td>
    				 <td>{{ .Name }}</td>
    			 </tr>
    		</tbody>
    		</table>
    		{{ end }}
    	`
    	data := []User{{"1", "小明"}, {"2", "小李"}}
    
    	//创建模板
    	tpl := template.New("txtTemplate")
    
    	tpl, err := tpl.Parse(txt)
    	if err != nil {
    		log.Fatal(err)
    	}
    
    	//执行输出到控制台
    	err = tpl.Execute(os.Stdout, data)
    	//fmt.Println(err)
    }
    

    二、模板嵌套

    package main
    
    import (
    	"os"
    	"text/template"
    )
    
    type title struct {
    	Title string
    }
    func main(){
    	header :=`{{ define "header"}}<head><meta charset="utf-8"/><title>{{ .Title }}</title></head>{{ end }}`
    	page1 :=`{{ define "page1" }}<!DOCYPE html>
       <html>
            {{ template "header" . }}
            <body>
             this is page1
            </body>
       </html>
       {{ end }}
        `
    	page2 :=`{{ define "page2"}}<!DOCYPE html>
       <html>
           {{ template "header" . }}
           <body>
            this is page2
           </body>
       </html>
       {{ end }}
       `
    	var ti1 =title{"定义page1"}
    	tp1,_ :=template.New("tp1").Parse(header)
    	tp1,_ = tp1.Parse(page1)
    	tp1,_ = tp1.Parse(page2)
    	tp1.ExecuteTemplate(os.Stdout,"page1",ti1)
    
    }

     三、分开模板

    1、page.html文件

    <!DOCYPE html>
    <html>
           {{ template "header.html" . }}//文件名称进行引用
           <body>
            this is page2
           </body>
    </html>
    

    2、header.html文件

    <head><meta charset="utf-8"/><title>{{ .Title }}</title></head>
    

    3、go文件

    package main
    
    import (
    
    	"html/template"
    	"os"
    )
    
    type User struct {
    	ID string
    	Name string
    }
    
    func main(){
    	tpl,_ :=template.New("tpl").ParseFiles("tpl/header.html","tpl/page.html")
    	tpl.ExecuteTemplate(os.Stdout,"page.html", struct {		Ttile string }{"模板文件"})

     四、go文件内书写html

    package main
    
    import (
    	"fmt"
    	"net/http"
    	"text/template"
    )
    
    func main() {
    
    	http.HandleFunc("/header/", func(w http.ResponseWriter, r *http.Request) {
    
    		tpl, err := template.ParseFiles("./HTML/index.html")
    		if err != nil {
    			panic(err)
    		}
    		err = tpl.ExecuteTemplate(w, "index.html", nil)
    		if err != nil {
    			panic(err)
    		}
    
    		fmt.Println("------------------")
    	})
    
    	http.ListenAndServe(":9099", nil)
    
    }
    

      

  • 相关阅读:
    CentOS查看CPU信息、位数、多核信息
    Linux常用命令大全
    chmod命令详细用法
    tar命令的详细解释
    yum和rpm命令详解
    LeetCode 241. Different Ways to Add Parentheses
    LeetCode 139. Word Break
    LeetCode 201. Bitwise AND of Numbers Range
    LeetCode 486. Predict the Winner
    LeetCode 17. Letter Combinations of a Phone Number
  • 原文地址:https://www.cnblogs.com/wuchangblog/p/14930807.html
Copyright © 2011-2022 走看看