go template修改定界符Delims的坑

直接上代码:

go:

package main

import (
    "fmt"
    "html/template"
    "net/http"
)

type V struct {
    A string
}

func main() {
    Serve()
}

func Serve() {
    //静态文件服务
    http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static"))))
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // 解析指定文件生成模板对象
        t, _ := template.New("").Delims("[[", "]]").ParseFiles("v/main.vue")
        Data := V{A: "pu369:go+vue真是稀缺组合"}
        //渲染输出
        t.ExecuteTemplate(w, "main1", Data)

    })
    fmt.Println("http://localhost:8000")
    http.ListenAndServe(":8000", nil)
}

v/main.vue

[[define "main1"]]
<html>
<head>
<!-- 注意以下三行引入顺序 -->
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<body>
[[.A]]
<div id="app">
 
</div>

<script>
var app=new Vue({
    el:"#app"

})
</script>
</body>
</html>
[[end]]

要点:

1、template.New的参数可以为空

2、当Delims和ParseFiles连用时,要配合t.ExecuteTemplate ,而不是t.Execute。

3、如:首先用Delims("[[", "]]")指定新定界符为 双中括号,然后在t.ExecuteTemplate中的模板名(如:main1)必须与模板中用[[define "main1"]] 一样。还有坑:注意模板名main1是带双引号的,并且define已经采用双中括号了。

猜你喜欢

转载自www.cnblogs.com/pu369/p/12894267.html