golang的html模板引擎中的渲染、布局的实现
Published on:2022-11-02
本文主要介绍 go 原生模板 html/template 包中的渲染 和 text/template 包中的布局模板使用。
一、渲染
//1.解析模板
temp := template.Must(template.ParseFiles("html/test1.html"))
//2.数据映射及输出模板
temp.Execute(w,"hello world") //Execute 渲染 ParseFiles参数的第一个文件
指定模板名称,中间的名称为文件名称
temp.ExecuteTemplate(w, "test1.index", "hello world") //指定名称渲染特定页面
二、布局
golang 提供可 {{define}} {{block}} {{template}} 三个actions指令,我们可以借助这三个指令实现模板的嵌套及布局
1.{{define "name"}} 内容 {{end}}
定义一个具有指定名称name的代码块,该名称name,主要被用于 模板渲染,以及block template 指令调用
模板渲染指定define的模块
temp.ExecuteTemplate(w, "define的name值", "hello world")
2.{{block "name" data}} 没有匹配到define时的内容 {{end}}
调用一个define定义的name的代码块,并给define模块中传入数据data
3.{{template "name" data}}
嵌套一个define定义的name的代码块,并给define模块中传入数据data
三、实现一个布局
html/layout/layouts.html布局页面
{{define "layout_default"}}
<!DOCTYPE html>
<html lang="en">
<head>
{{block "header" .}}{{end}}
</head>
<body class="gray-bg" style="display: none">
<div class="container-div">
<div class="row">
{{block "content" .}}{{end}}
</div>
</div>
{{block "js_src" .}}{{end}}
{{block "script" .}}{{end}}
</body>
</html>
{{end}}
html/layout/include.html 公共资源,可以定义一些通用的代码块
{{define "header"}}
<title>B5GoCMF</title>
<meta charset="UTF-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link href="/static/admin/plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet"/>
{{end}}{{define "js_src"}}
<script type="text/javascript" src="/static/admin/plugins/jquery/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="/static/admin/plugins/bootstrap/js/bootstrap.min.js"></script>
{{end}}
测试页面html/test/index.html
{{define "test/index"}}
{{template "layout_default" .}}
{{end}}
{{define "content"}}
<div class="col-sm-12 search-collapse">
//页面代码
</div>
{{end}}
{{define "script"}}
<script>
//js代码
</script>
{{end}}
渲染布局及调用显示html/test/index.html
func handleTest(w http.ResponseWriter,r *http.Request) {
//1.解析模板 布局文件必须也要解析
layoutFiles :=[]string{"html/layout/layouts.html","html/layout/include.html"}
layoutFiles = append(layoutFiles, "html/test/index.html")
temp := template.Must(template.ParseFiles(layoutFiles...))
//html/test/index.html 页面中定一个了一个自己的test/index
temp.ExecuteTemplate(w, "test/index", "hello world")
}
留言列表(0)
加载更多
留言
开源项目
- B5LaravelCMF:基于laravel9+bootstrap3实现的快速开发后台
- B5YiiCMF:基于Yii2+bootstrap3 实现的快速开发后台管理系统
- B5ThinkCmf:基于ThinkPHP6+bootstrap3 实现的快速开发后台管理系统
- B5GoCmf:gin + sqlx +bootstrap 实现后端管理系统
- See also:gitee.com@b5net
最新评论
wpstqe
:作者大大有没有建一个QQ群的计划?
流浪的PHPer
:感谢开源项目,快速开发非常的好用!
小白
:大佬您好 请问一下 http://b5laravelcmf.b5net.com/admin这个演示网址的全部代码有吗,gitee上不全呢,还能提供一下吗,感激不尽阿
tz
:大佬 B5YiiCMF 还开放吗
weifox
on GoLang常用的三方库
:还有 https://github.com/golang-module/carbon
php
:关于导出功能:1、B5thinkCMF部署后 参数的导出功能点击后就白屏了,不知道是哪里有问题?2、人员部门的导出功能没看懂怎么配置的? 只是启用exportshow=true吗
方便的话请答复下,谢谢!
初学者
:您好! 部署了您的B5ThinkCMF,请教下 使用新增功能如何实现二级联动呢 ?谢谢
11
:22
pcy
:前排围观
Louis
:冰舞的博客使用yii框架做的吧,B5ThinkCMF在本地部署后,登录系统的响应时间要比B5YiiCMF的登录时间长,还有一些Bug待修复
文章分类
标签