模板引擎

Go 为我们提供了 text/template 库和 html/template 库这两个模板引擎,模板引

擎通过将数据和模板组合在一起生成最终的 HTML,而处理器负责调用模板引擎并将引

擎生成的 HTMl 返回给客户端。

Go 的模板都是文本文档(其中 Web 应用的模板通常都是 HTML),它们都嵌入了

一些称为动作的指令。从模板引擎的角度来说,模板就是嵌入了动作的文本(这些文本

通常包含在模板文件里面),而模板引擎则通过分析并执行这些文本来生成出另外一些

文本。

HelloWorld

使用 Go 的 Web 模板引擎需要以下两个步骤:

(1) 对文本格式的模板源进行语法分析,创建一个经过语法分析的模板结构,其中

模板源既可以是一个字符串,也可以是模板文件中包含的内容。

(2 )执行经过语法分析的模板,将 ResponseWriter 和模板所需的动态数据传递给模

板引擎,被调用的模板引擎会把经过语法分析的模板和传入的数据结合起来,生成出最

终的 HTML,并将这些 HTML 传递给 ResponseWriter。

下面就让我们写一个简单的 HelloWorld

创建模板文件 hello.html

模板文件

//嵌入动作 {{.}}

在处理器中触发模板引擎

func handler(w http.ResponseWriter, r *http.Request) {

//解析模板文件

t, _ := template.ParseFiles("hello.html")

//执行模板

t.Execute(w, "Hello World!")

}

浏览器中的结果

Hello World!

解析模板

ParseFiles 函数

当我们调用 ParseFiles 函数解析模板文件时,Go 会创建一个新的模板,

并将给定的模板文件的名字作为新模板的名字,如果该函数中传入了多个

文件名,那么也只会返回一个模板,而且以第一个文件的文件名作为模板

的名字,至于其他文件对应的模板则会被放到一个 map 中。让我们再来

看一下 HelloWorld 中的代码:

t, _ := template.ParseFiles("hello.html")

以上代码相当于调用 New 函数创建一个新模板,然后再调用 template 的

ParseFiles 方法:

t := template.New("hello.html")

t, _ = t.ParseFiles("hello.html")

我们在解析模板时都没有对错误进行处理,Go 提供了一个 Must 函数专

门用来处理这个错误。Must 函数可以包裹起一个函数,被包裹的函数会

返回一个指向模板的指针和一个错误,如果错误不是 nil,那么 Must 函数

将产生一个 panic。

实验 Must 函数之后的代码

t := template.Must(template.ParseFiles("hello.html"))

ParseGlob 函数

通过该函数可以通过指定一个规则一次性传入多个模板文件,如:

t, _ := template.ParseGlob("*.html")

执行模板

通过 Execute 方法

如果只有一个模板文件,调用这个方法总是可行的;但是如果有多个模板

文件,调用这个方法只能得到第一个模板

通过 ExecuteTemplate 方法

例如:

t, _ := template.ParseFiles("hello.html", "hello2.html")

变量 t 就是一个包含了两个模板的模板集合,第一个模板的名字是

hello.html,第二个模板的名字是 hello2.html,如果直接调用 Execute 方法,

则只有模板 hello.html 会被执行,如何想要执行模板 hello2.html,则需要

调用 ExecuteTemplate 方法

t.ExecuteTemplate(w, "hello2.html", "我要在 hello2.html 中显示")

go模板引擎生成html,goweb-模板引擎相关推荐

  1. vscode生成html模板快捷键以及自定义html模板

    一.生成html快捷键 ! + tab ! + Enter 注:! 是英文的感叹号,其次直接输入 ! 再按tab或enter键,不要加 <后再按 ! + tab/enter,这种是生成不了htm ...

  2. 用JAVA写的word模板自动生成引擎

    大家好,我是TJ 一个励志推荐10000款开源项目与工具的程序员 TJ君做项目的时候最头疼什么?当然是写各种文档啦,尤其是在大公司做项目,各种规范文档不可少,虽然说一个成熟的项目管理过程中的确是要依靠 ...

  3. Beetl 模板引擎生成word以及excel总结

    Beetl Java模板引擎生成word excel 之前项目中使用freemarker和POI进行word以及excel的模板导出,在使用的过程中为了解决一些小问题,意外的接触了Beetl这款模板生 ...

  4. php模板引擎如何实现,php模板引擎技术简单实现

    用了smarty,tp过后,也想了解了解其模板技术是怎么实现,于是写一个简单的模板类,大致就是读取模板文件->替换模板文件的内容->保存或者静态化 tpl.class.php主要解析 as ...

  5. 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)

    前些时间在看创智博客韩顺平的Smarty模板引擎教程,再结合自己跟李炎恢第二季开发中CMS系统写的tpl模板引擎.今天就写一个迷你版的Smarty引擎,虽然说我并没有深入分析过Smarty的源码,但是 ...

  6. 使用 .NET Core模板引擎创建自定义的模板和项目

    本文要点 .NET CLI 包含了一个模板引擎,它可以直接利用命令行创建新项目和项目项.这就是"dotnet new"命令. 默认模板集涵盖了默认控制台和基于 ASP.NET 的应 ...

  7. 模板引擎ejs与html,后台模板引擎ejs与前台模板引擎artTemplate的简单介绍

    动态网页是指前端页面当中的数据内容来源于后台数据库,前端的html代码会随着后台数据的变化而变化,是动态生成的.制作动态网页有两种方式,一种方式是在后台拿到前端的html模板,利用后台模板引擎(如ej ...

  8. 什么是模板引擎?常见的模板引擎有哪些?thymeleaf的常用指令介绍

    一.模板引擎概念 模板引擎是为了解决用户界面(显示)与业务数据(内容)分离而产生的. 它可以生成特定格式的文档,常用的如格式如HTML.xml以及其他格式的文本格式.其工作模式如下: 举个例子,我想买 ...

  9. 自定义 Javascript 模板规则,打造轻量级模板引擎

    直接贴 TemplateHelper 代码了: var TemplateHelper = {englishChars: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",b ...

  10. php模板引擎如何实现,PHP模板引擎如何实现

    假设使用标签形式作为模板语法 在解析环节我想到两种实现方式 1. 利用正则获取标签内容,然后将标签进行规则性的替换并使用eval进行解析,解析完成后再用正则进行替换 2. 利用正则获取标签内容,然后将 ...

最新文章

  1. 创建一个Table View
  2. A SPI class of type org.apache.lucene.codecs.PostingsFormat with name 'Lucene40' does not exist.
  3. 李飞飞演讲实录 | 云原生数据库2.0:一站式全链路数据管理与服务
  4. spring boot 启动卡住_SpringBoot 居然有 44 种应用启动器
  5. Custom PuTTY Color Themes
  6. 计算机 学术论文写作,计算机辅助学术论文写作系统的研制策略与方法.pdf
  7. mysql 主从同步原理
  8. python 编写一个银行卡类,具有账号,人名与余额属性。编写提款机类,接收一张银行卡,并且具有存款,提款,查询余额,转账功能
  9. matlab对信号加噪代码,Matlab给信号加噪声
  10. vivo Z1的USB调试模式在哪里,打开vivo Z1USB调试模式的经验
  11. javascript:html嵌入javascript代码的三种方式
  12. iphone个系列尺寸_Iphone各个型号机型的详细参数,尺寸和dpr以及像素
  13. Wincc报表案例_设备运行报表
  14. UnboundLocalError: local variable ‘Num_fSu‘ referenced before assignment
  15. vue3实战项目——网易云App【01-项目准备】
  16. 傲游 android 2.3,傲游浏览器安卓版-傲游浏览器手机版v5.2.3.3256-3454手机软件
  17. 基于javaweb的私人牙科诊所病历管理系统(java+jsp+css+javascript+mysql)
  18. 范式1NF,2NF,3NF
  19. Excel定位功能删除空值所在行
  20. 自学编程之路(自我记录)

热门文章

  1. 关于 Windows6.1-KB2999226-x64.msu 此更新不适用你的计算机解决办法
  2. 计算机EV录屏培训体会,停课不停学19|好用的EV录屏软件助力线上教学
  3. 机器人开发--编码器
  4. ezcad2激光打标软件_振镜篇:激光振镜工作原理
  5. python判断手机号码是否正确_python检测手机号码是否合法
  6. HTML期末大作业~ 仿新浪微博个人主页html网站模板4个页面(HTML+CSS+JavaScript)
  7. Alter table alter |change |modify 区别
  8. 为 Windows 系统替换优雅的苹果字体
  9. Quartus波形仿真教程
  10. Tuxedo 介绍与安装