[toc]
安装
- npm install -g pug
- npm install -g pug-cli
- pug index.pug
webstorm添加pug文件自动编译
- WebStorm下,File->settings,在左上角搜索watcher,选择Tools->fileWatcher
- 添加一个watcher,选择类型为Jade(pug支持安装了,但是不知道怎样使用,发现全部用Jade也能使用)
- 在Program下,选择pug的安装路径,如我的为:/usr/local/bin/pug,在Arguments的默认值前面添加-P可以让编译后的文件格式化显示
- 编写pug文件,编写后,会自动生成相应的编译后文件
在 Express 中调用 jade 模板引擎
1 | app.set('view engine', 'jade'); // 设置模板引擎 |
基本语法及支持
类名和ID名
属性
属性可以使用()包裹起来,属性值之间用逗号隔开,如:a(href=“google.com”,title=“google”)
文本内容
在html标签后空格直接书写
多行文本内容
1 | p. |
或者
1 | p |
注释
- 单行注释
- 普通方式:// just some paragraphs,翻译为:
- 非缓冲注释,不会被编译到HTML://- will not output within markup
- 多行注释
1 | // |
变量
jade 的变量调用有 3 种方式:
- #{表达式} //此方式可以自由的嵌入各个地方
- =表达式 //返回的是表达式的值,会编码字符串
- !=表达式 //返回的是表达式的值,不会编码字符串
注意:符号 - 开头在 jade 中属于服务端执行的代码
1 | - console.log('hello'); // 这段代码在服务端执行 |
使用:
- 直接在 jade 模板中定义变量
- 在 express 中调用 res.render 方法的时候将变量一起传递进模板的空间中,调用模板的时候,在 jade 模板中也可以如上方那样直接调用 s 这个变量
1 | res.render(test, { |
流程代码
if判断
方式1:
1 | - var user = { description: '我喜欢猫' } |
方式2:
1 | - var user = { description: '我喜欢猫' } |
方式1、方式2执行结果:
1 | <div id="user"> |
方式3:
使用 Unless 类似于 if 后的表达式加上了 ! 取反;这个 unless 是 jade 提供的关键字,不是运行的 js 代码
1 | - var user = { name: 'Alan', isVip: false } |
循环
- for 循环
1 | - var array = [1,2,3] |
- each:in后的循环目标支持数组、json
1 | ul |
Case选择
case 不支持case 穿透,如果 case 穿透的话会报错
1 | - var friends = 1 |
或
1 | - var friends = 10 |
模板中调用Markdown语言
1 | :markdown |
可重用的 jade 块 (Mixins)
1 | mixin article(title) |
结果:
1 | <div class="article"> |
Mixins 同时也可以从外部获取属性:
1 | mixin link(href, name) |
模板包含 (Includes)
可以使用 Includes 在模板中包含其他模板的内容
模板继承 (Extends)
layout.jade
1 | doctype html |
article.jade
1 | //- extends 拓展调用 layout.jade |
res.render(‘article’) 的结果:
1 | <html> |