zoukankan      html  css  js  c++  java
  • 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已经采用双中括号了。

  • 相关阅读:
    Execl(2003)数据 导入 SQL Server(2005)
    访问远程MySQL
    国学堂—梁冬对话林曦
    男人对自己狠一点
    国学堂-梁冬对话王东岳
    国学堂—梁冬对话栗强
    内功
    学说话见识语言的力量
    一语道破中国千年潜规则——每天懂一点人情世故
    禅茶茶艺 (十二道)
  • 原文地址:https://www.cnblogs.com/pu369/p/12894267.html
Copyright © 2011-2022 走看看