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已经采用双中括号了。

  • 相关阅读:
    javaEE_maven_struts2_tomcat_first
    企业框架-Spring
    MyBatis延迟加载及缓存
    MyBatis注解及动态Sql
    框架之MyBatis
    SQL中的一些关键字用法
    Mysql————基本sql语句
    表单验证
    java中的锁——列队同步器
    线程同步Lock锁
  • 原文地址:https://www.cnblogs.com/pu369/p/12894267.html
Copyright © 2011-2022 走看看