复杂的模板函数文档可见:sprig

基本关键字

sprig文档没提到的但又十分有用的基本关键字

  1. not
  2. lggteq
  3. if else end
  4. range end

注释

  1. .action{/* 用斜杠和星号括起来的内容是注释 */}

if-else语句

结束需要用end
赋值需要用= (if语句内如果想要给外部的全局变量赋值,需要用=而不是:=,因为在golang里如果直接在if语句用:=就相当于是在创建局部变量。)

案例:给月份补0

  1. .action{$this_year := 2021}
  2. .action{$this_month := 7}
  3. .action{/* 处理月份为两位整数,小于10,则为0x */}
  4. .action{if gt $this_month 10}
  5. .action{/* 坑:这里是=而不能是:= */}
  6. .action{$this_month = $this_month}
  7. .action{else}
  8. .action{$this_month = nospace (cat "0" $this_month)}
  9. .action{end}
  10. .action{$this_month}

range循环语句

  1. Title:.action{.title}
  2. .action{/* 1.先通过sql把查询结果赋值保存到blocks变量中去 */}
  3. .action{$blocks :=queryBlocks "SELECT * FROM blocks WHERE created >= '20210505' AND created <= '20210506' AND type !='d' AND type !='h' AND type !='i' AND root_id != '20210504004406-wc9gfh0' order by updated"}
  4. .action{/* 2. range开始循环,把查询到的block一个个循环命名为b */}
  5. .action{range $b := $blocks}
  6. .action{$b.ID} | .action{$b.Path}
  7. Type: .action{$b.Type}
  8. Markdown: .action{$b.Markdown}
  9. Content: .action{$b.Content}
  10. .action{end}
  11. .action{/* 3.循环结束 */}