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

  • 相关阅读:
    siteserver学习笔记
    移动端开发适配的2中方案
    移动端中适配问题
    2倍图3倍图怎么用
    常用的网站收藏
    关于用h5实现移动端的知识梳理
    悬浮广告代码
    vue中添加echarts
    VUE中给template组件加背景
    纯CSS控制背景图片100%自适应填充布局
  • 原文地址:https://www.cnblogs.com/pu369/p/12894267.html
Copyright © 2011-2022 走看看