分享
  1. 首页
  2. 文章

Golang下的html/template模块使用

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

关于template模板,Golang语言提供了两个包text/templatehtml/template,前者主要用来处理文本文件的变量渲染,而后者主要用于对html之类的网页文件进行渲染。由于最近在使用gin框架编写REST API,顺便学习template的使用,再此记录一下。

html/template常用的对象和方法

template模板的使用主要是在对Template结构体的相关方法进行操作。我们首先得初始化一个Template对象。

type Template struct {
 Tree *parse.Tree
}
# 初始化一个template对象
## Must函数会在Parse返回err不为nil时,调用panic,不需要初始化后再调用Parse方法去检测
func Must(t *Template,err error) *Template
## New函数用来创建一个指定的HTML模板
func New(name string) *Template
## ParseFiles函数用来从一个指定的文件中创建并解析模板
func ParseFiles(filenames ...string) (*Template, error)
## ParseGlob函数从指定的匹配文件中创建并解析模板,必须得至少匹配一个文件
func ParseGlob(pattern string) (*Template, error)
# Template结构体对象常用的几个方法
## 使用New()函数创建的模板需要指定模板内容
func (t *Template) Parse(text string) (*Template, error)
## Delims()方法用来指定分隔符来分割字符串,随后会使用Parse, ParseFiles, or ParseGlob方法进行模板内容解析
func (t *Template) Delims(left, right string) *Template
## Execute()方法用来把一个模板解析到指定的数据对象data中,并且写入到输出wr中。如果有任何错误,就like停止,但如果是并行操作的话,有一些数据已经被写入了。因此,使用该方法一定要注意并发安全性
func (t *Template) Execute(wr io.Writer, data interface{}) error
## 同上
func (t *Template) ExecuteTemplate(wr io.Writer, name string, data interface{}) error

示例程序

# 模板文件
$ $ cat app.tpl
<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>layout</title>
 </head>
 <body>
 <h3>userslist:</h3>
 <p>userlist:</p>{{ .}}
 <p>users:</p>
 {{range $i,$e := .}}
 {{$i}}:{{$e}}
 {{end}}
 {{range .}}
 {{ .}}
 {{end}}
 </body>
</html>
# 示例程序
$ cat golanghtml.go
package main
import (
 "html/template"
 "os"
)
func main() {
 /*
 1.声明一个Template对象并解析模板文本
 func New(name string) *Template
 func (t *Template) Parse(text string) (*Template, error)
 2.从html文件解析模板
 func ParseFiles(filenames ...string) (*Template, error)
 3.模板生成器的包装
 template.Must(*template.Template, error )会在Parse返回err不为nil时,调用panic。
 func Must(t *Template, err error) *Template
 t := template.Must(template.New("name").Parse("html"))
 */
 t, _ :=template.ParseFiles("app.tpl")
 //t,_ := template.ParseGlob("*.tpl")
 t.Execute(os.Stdout, []string{"bgbiao","biaoge"})
}
$ go run golanghtml.go
<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>layout</title>
 </head>
 <body>
 <h3>userslist:</h3>
 <p>userlist:</p>[bgbiao biaoge]
 <p>users:</p>
 0:bgbiao
 1:biaoge
 bgbiao
 biaoge
 </body>
</html>

可以看到,html文本成功的将我们定义的[]string{"bgbiao","biaoge"}进行渲染并输出了。


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

本文来自:简书

感谢作者:BGbiao

查看原文:Golang下的html/template模块使用

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

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

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏