简介
最近在整理我们项目代码的时候,发现有很多活动的代码在结构和提供的功能上都非常相似。为了方便今后的开发,我花了一点时间编写了一个生成代码框架的工具,最大程度地降低重复劳动。代码本身并不复杂,且与项目代码关联性较大,这里就不展开介绍了。在这个过程中,我发现 Go 标准的模板库text/template
和html/template
使用起来比较束手束脚,很不方便。我从 GitHub 了解到quicktemplate
这个第三方模板库,功能强大,语法简单,使用方便。今天我们就来介绍一下quicktemplate
。
快速使用
本文代码使用 Go Modules。
先创建代码目录并初始化:
$ mkdir quicktemplate && cd quicktemplate
$ go mod init github.com/darjun/go-daily-lib/quicktemplate
quicktemplate
会将我们编写的模板代码转换为 Go 语言代码。因此我们需要安装quicktemplate
包和一个名为qtc
的编译器:
$ go get -u github.com/valyala/quicktemplate
$ go get -u github.com/valyala/quicktemplate/qtc
首先,我们需要编写quicktemplate
格式的模板文件,模板文件默认以.qtpl
作为扩展名。下面我编写了一个简单的模板文件greeting.qtpl
:
All text outside function is treated as comments.
{% func Greeting(name string, count int) %}
{% for i := 0; i < count; i++ %}
Hello, {%s name %}
{% endfor %}
{% endfunc %}
模板语法非常简单,我们只需要简单了解以下 2 点:
模板以函数为单位,函数可以接受任意类型和数量的参数,这些参数可以在函数中使用。所有函数外的文本都是注释,
qtc
编译时会忽视注释;函数内的内容,除了语法结构,其他都会原样输出到渲染后的文本中,包括空格和换行。
将greeting.qtpl
保存到templat