-
Notifications
You must be signed in to change notification settings - Fork 4
中文文档
FET是Friendly, Easily, Template这三个单词的首字母,寓意友好、简单的模板引擎。
FET本身不算一个模板引擎,因为目前的代码都会编译成go官方库html/template
代码。
这样做的原因有三个:
- 原始的
html/template
模板在代码层面已经对一个模板引擎该有的功能有了足够多的支持 - 毕竟是官方出品,使用受众比较广泛,这样对于本身使用
html/template
模板的用户只需在模板层做代码改动,就可以渐进式地逐步替换go原生模板为fet模板 - 少一点工作量,偷个懒
当然,这并不代表FET只是做了简单的翻译工作,实际上它缺少的只是generate部分将模板代码转译成go代码而不是go原生模板代码,模板引擎需要做的前期分析处理部分都已经完成了。在有足够需要的情况下,完全可以处理成自己的模板引擎代码,尽管这也是个很费力气的事情。
熟悉php smarty模板语法的同学,应该不需要额外的学习成本,因为默认smarty
模式就是按smarty的语法来书写的,这表示:
- 如果你的项目使用php+smarty要迁移到go,如果不是用到特别高级的功能的情况下,模板的迁移成本会要小很多
- 在你的编辑器里如vscode可以使用smarty的语法高亮插件来对代码进行高亮
所有这些都将增强模板的书写体验,相信大部分写过html/template
模板代码的人,都有这样的体验:原始、不直观、如行动时手脚被缚,这种不爽的体验就是开发fet的原动力。
-
Extends
{%extends "base.tpl"%}
和smarty一样,extends必须放在开头,前面只能有fet的注释节点或者文本节点 -
Include
{%include "inc.tpl" show=true%}
支持添加属性变量 -
Block
{%block "content"%}{%/block%}
继承时block替换区块 -
Capture
{%capture "name"%}{%/capture%}
捕获,和smarty一样,注意:不支持assign\append等其它参数 -
Foreach
{%foreach $list as $item%}{%/foreach%}{%foreach $list as $key => $item%}{%/foreach%}
foreach循环 -
For
{%for $i = 0, $j = count($list); $i < $j; $i++%}{%/for%}
for循环,注意,for循环和foreach都不支持break/continue关键字 -
Variable
{%$title = "你好,china!"%}
-
Output
{%$title%}
-
Pipe
{%$title|truncate:2%}
-
Static variables
$fet
相当于.$fet.now
当前unix时间戳$fet.capture.xxx
定义的capture$fet.config.xxx
fet的配置信息