GO模板引擎的使用

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 【6月更文挑战第12天】

解析模板文件

func (t *Template) Parse(src string) (*Template, error)
func ParseFiles(filenames ...string) (*Template, error)
func ParseGlob(pattern string) (*Template, error)

当然也可以使用func New(name string) *Temolate函数创建一个名为name的模板,然后对其调用方法去解析字符串或模板文件。
模板渲染
渲染模板简单来说就是使用去填充模板。

func (t *Template) Execute(wr io.Writer, data interface{
   
   }) error
func (t *Template) ExecuteTemplate(wr io.Writer, name string, data interface{
   
   }) error

举一个例子:
我们按照GO模板语法创建一个hello.html的模板文件,当然也可以创建hello.tmpl或者hello.tpl

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>Hello,{
   
   {
   
    .Name }}</p>
<p>Hello,{
   
   {
   
    .Gender }}</p>
<p>Hello,{
   
   {
   
    .Age }}</p>
</body>
</html>

然后进行解析和渲染。
创建一个main.go文件。

type UserInfo struct {
   
   
    Name   string
    Gender string
    Age    int
}

func sayHello(w http.ResponseWriter, r *http.Request) {
   
   
    // 解析指定文件生成模板对象
    tmpl, err := template.ParseFiles("./hello.html")
    if err != nil {
   
   
        fmt.Println("create template failed, err:", err)
        return
    }
    // 利用给定数据渲染模板,并将结果写入w
    user := UserInfo{
   
   
        Name:   "林苏泽",
        Gender: "男",
        Age:    18,
    }
    tmpl.Execute(w, user)
}

// main.go

func main() {
   
   
    http.HandleFunc("/", sayHello)
    err := http.ListenAndServe(":9000", nil)
    if err != nil {
   
   
        fmt.Println("HTTP server failed,err:", err)
        return
    }
}

然后运行访问9000端口
先build,然后运行生成exe文件即可。每次修改都需要重新build一边。
image.png

其中{ {.}}是要替换的内容,就是需要渲染的地方。
我们传入变量是map时,也可以通过模板文件.根据key来渲染。

// 利用给定数据渲染模板,并将结果写入w
    user := UserInfo{
   
   
        Name:   "林苏泽",
        Gender: "男",
        Age:    18,
    }
    m1 := map[string]interface{
   
   }{
   
   
        "Name":   "林素",
        "Gender": "男",
        "Age":    18,
    }
    tmpl.Execute(w, map[string]interface{
   
   }{
   
   
        "user": user,
        "m1":   m1,
    })
}
目录
相关文章
|
SQL 开发框架 安全
Go Web编程实战(10)----模板引擎库text/template包的使用
Go Web编程实战(10)----模板引擎库text/template包的使用
332 0
Go Web编程实战(10)----模板引擎库text/template包的使用
|
Go Python
Go Web 编程入门:Go pongo2 模板引擎(下)
模板引擎是一个库,旨在将模板与数据结合起来以生成文档。模板引擎用于生成大量电子邮件、源代码预处理或生成动态 HTML 页面。
|
Go Python
Go Web 编程入门:Go pongo2 模板引擎(上)
模板引擎是一个库,旨在将模板与数据结合起来以生成文档。模板引擎用于生成大量电子邮件、源代码预处理或生成动态 HTML 页面。
Go Web 编程入门:Go pongo2 模板引擎(上)
|
5天前
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
23 2
|
3天前
|
Go 索引
go语言中的循环语句
【11月更文挑战第4天】
11 2
|
3天前
|
Go C++
go语言中的条件语句
【11月更文挑战第4天】
14 2
|
8天前
|
Ubuntu 编译器 Linux
go语言中SQLite3驱动安装
【11月更文挑战第2天】
30 7
|
8天前
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
38 5
|
8天前
|
安全 Go
用 Zap 轻松搞定 Go 语言中的结构化日志
在现代应用程序开发中,日志记录至关重要。Go 语言中有许多日志库,而 Zap 因其高性能和灵活性脱颖而出。本文详细介绍如何在 Go 项目中使用 Zap 进行结构化日志记录,并展示如何定制日志输出,满足生产环境需求。通过基础示例、SugaredLogger 的便捷使用以及自定义日志配置,帮助你在实际开发中高效管理日志。
25 1
|
7天前
|
程序员 Go
go语言中的控制结构
【11月更文挑战第3天】
84 58