jade的使用
jade(Pug)
由于商标版权问题,jade 已经改名为 Pug,github 地址为https://github.com/pugjs/pug。
jade 是一个高性能的模版引擎。
文件后缀名是.pug(.jade)。
jade 的优点
- 可读性高
- 灵活缩进
- 块展开
- 代码默认经过编码处理,安全性高
- 运行时和编译时上下文错误报告
- 支持命令行编译
- 支持 html5 模式
- 在内存中缓存(可选)
- 原生支持 express
- 合并动态和静态标签类
- 过滤器
jade 的编译方法
1 | pug xxx.jade //xxx为要编译的文件名 |
jade 与 express
jade 完全集成了一个流行的 node.js Web 框架 Express,作为支持的视图引擎。
jade 的 API
标签属性
id,class 写法
1
2
3
4
5
6
7
8
9
10
11
12
13// 编译前
p.title class写法1
p(class='title') class写法2
p#tit id写法1
p(id='tit2') id写法2
// 编译后
<p class="title">class写法1</p>
<p class="title">class写法2</p>
<p id="tit">id写法</p>
<p id="tit2">id写法2 </p>1
2
3
4
5
6
7
8
9
10// 编译前
- var classArr = ['small','medium','large']
a(class= classArr)
a.test(class = classArr class=['add'])
// 编译后
<a class="small medium large"></a>
<a class="test small medium large add"></a>1
2
3
4
5
6
7
8//编译前
- var active = 'select'
a(class={active: active === 'select'} )
// 编译后
<a class="active"></a>其他属性
通过()来依次编写属性,多个用逗号分开1
2
3
4
5
6
7//编译前
a(class='baidu' ,title='baidu' href='www.baidu.com') 百度
//编译后
<a class="baidu" title="baidu" href="www.baidu.com">百度</a>也支持所有正常的 javascript 表达式
1
2
3
4
5
6
7
8// 编译前
- var flag = true //注意这里使用变量要记得添加-符号.
h2(class=flag ? 'flag': '')
// 编译后
<h2 class="flag"></h2>多个属性的另外写法
其实就是换行缩进pug // 编译前 a( title='baidu', href='www.baidu.com', class='links' ) // 编译后 <a class="links" title="baidu" href="www.baidu.com"></a>
引用属性
如果你的属性名称包含了与 javascript 语法冲突的字符,请使用”或’引用,或者使用逗号分隔不同的属性。1
2
3
4
5
6
7//(click)='play()',这里(click)会被当作一个函数调用而不是一个属性名字来解析.
// 编译前
div(class='div-class' (click)='play()')
// 编译后报错
div(class='div-class' (click)='play()')正确写法
1
2
3
4
5
6
7// 编译前
div(class='div-class' '(click)'='play()')
div(class='div-class', (click) = 'play()')
// 编译后
<div class="div-class" (click)="play()"></div>
<div class="div-class" (click)="play()"></div>属性插值
1
2
3
4
5
6
7
8
9// 编译前
- var url = 'demo.com'
a(href='/' + url) links
- var url2 = 'www.baidu.com'
a(href = url2 ) 百度
// 编译后
<a href="/demo.com">links</a>
<a href="www.baidu.com">百度 </a>如果你的 javascript 运行环境支持 ES 2015.那么 Pug 支持模板字符串语法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// 编译前
- var size1 = 'small'
- var size2 = 'medium'
- var size3 = 'large'
button(
type='button',
class='btn btn-' + size1 + ' ' + 'btn-' + size2 + ' ' + 'btn-' + size3
)
button(
type='button',
class=`btn btn-$(size1) btn-$(size2) btn(size3)`
)
// 编译后
<button class="btn btn-small btn-medium btn-large" type="button"></button>
<button class="btn btn-small btn-medium btn-large" type="button"></button>未转义属性
默认情况下,会转义所有属性(用转义序列代替特殊字符),以防止诸如跨站点脚本之类的攻击。 如果必须需要使用特殊字符,可以使用!=而不是=。
1 | // 编译前 |
1 | // 编译前 |