golang 模板继承

韩小禹 · · 1796 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  • main.go
package main

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

func index(w http.ResponseWriter, r *http.Request) {
    // 定义模板
    // 解析模板
    // 父模板和子模板的顺序不能乱,父在前,子在后
    t, err := template.ParseFiles("./layouts/main.tmpl","./layouts/content.tmpl")
    if err != nil{
        fmt.Printf("parse files failed, err : %v\n", err)
        return
    }
    // 渲染模板
    // 渲染模板时使用ExecuteTemplate函数,需要制定要被渲染的模板名称
    t.ExecuteTemplate(w, "content.tmpl","index")
}


func main() {
    http.HandleFunc("/index", index)
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        fmt.Printf("http server failed, err : %v\n", err)
        return
    }
}

  • layouts/main.tmpl
<html>
<head>
    <title>模板继承</title>
    <style>
        *{
            margin :0;
        }
        .nav{
            height: 50px;
            position:fixed;
            width: 100%;
            top:0;
            background-color: burlywood;
        }
        .main{
            margin-top: 50px;
        }
        .menu{
            width: 200px;
            height:100%;
            position: fixed;
            left: 0;
            background-color: cornflowerblue;
        }
        .center{
            text-align: center;
        }
    </style>
</head>
<body>
<div class="nav"></div>
<div class="main">
    <div class="menu"></div>
    <div class="content center">
        <!--定义一个区块-->
        {{block "content" .}}{{end}}
    </div>
</div>
</body>
</html>
  • layouts/content.tmpl
  • {{template "main.tmpl" .}}这里的点"."必须加上,否则子模板将获取不到数据
{{template "main.tmpl" .}}
{{define "content"}}
<h1>
    这里是子模板,{{ . }}
</h1>
{{end}}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:韩小禹

查看原文:golang 模板继承

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1796 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传