PugJS是一款HTML模板(前身是jade)。

PugJS最大的特点是用类似缩进的方式来表示HTML(或者XML)的模板,下面是一个例子:

ul
  li Item A
  li Item B
  li Item C

上面的模板经过处理之后会变成:

<ul>
  <li>Item A</li>
  <li>Item B</li>
  <li>Item C</li>
</ul>

当然,PugJS还支持变量、条件控制、循环控制等模板中常见的功能。将上面的例子改成循环:

- var items = ['A', 'B', 'C']
ul
  each item in items
   li= "Item " + item

PugJS也可以用来生成XML代码:

doctype xml
person Grumpy

的输出是:

<?xml version="1.0" encoding="utf-8" ?>
<person>Grumpy</person>

PugJS中有一些保留字,不能在模板中直接使用:

default-name Grumpy

上面的模板会产生错误:

index.pug:1:8
  > 1| default-name Grumpy
--------------^
    2|   

default should not have an expression

这种情况,只需要改用表达式语法即可:

#{"default-name"} Grumpy

其他

(完)

2020-07-04更新

pug-cli,从命令行控制pug模板的生成。

html2pug,可以将HTML转为PUG:html2pug < example.html > example.pug

vim-pug是Vim的pug语法文件。

(更新完)

2021-06-07更新

使用pug -w . -o out -P -E xml可以监控某个文件夹并自动生成目标代码。

(更新完)

2021-07-09更新

https://en.wikipedia.org/wiki/Off-side_rule

Peter Landin, in an article titled “The Next 700 Programming Languages”, defined the off-side rule thus: “Any non-whitespace token to the left of the first such token on the previous line is taken to be the start of a new declaration."[3]

(更新完)