pug学习
!=partial()方法
在 Pug 模板语言中,!= 表示不转义插入,partial 用于插入另一个 Pug 模板片段。
!=partial('template_name')
意思是:不转义插入名为 template_name
的 Pug 模板片段。
在pug中,!=partial有以下方法:
1.第一个参数:模板文件的路径,可以是绝对路径或者相对路径,用字符串表示。例如:header.pug
2.第二个参数:向模板文件传递局部变量的对象。例如:{title:'首页'}
3.第三个参数:编译选项的对象,通常用来缓存模板。例如:{cache: true}
所以一个典型的 partial 用法是:
1 | != partial('header', {title:'首页'}, {cache: true}) |
这会引入 header.pug 模板,传递一个 title 变量,并缓存这个模板。
传递变量的解释如下:
例如:
1 | // home.pug |
1 | // header.pug |
在 home.pug 中,我们调用 partial 引入 header.pug
模板,同时传递了一个{name: '小明'}
对象。在header.pug
模板中,可以通过 pug.locals
访问传递的变量,这里我们取出了 name 变量并渲染。运行结果:
1 | <p>欢迎 小明</p> |
if方法
在pug中if的主要语法如下:
1 | if condition |
下面举一个例子:
1 | a(href=url_for('/') title=config.title) |
在第一个if中,如果theme.nav.logo
配置了图片链接,那么就为true
就会执行img这一行代码
在第二个if中,如果theme.nav.display_title
中配置了title,那么就会执行span这一行代码
现在再来举一个复杂一点的代码:
1 | if (theme.algolia_search.enable || theme.local_search.enable || theme.docsearch.enable) |
在这个if中,如果theme.algolia_search.enable || theme.local_search.enable || theme.docsearch.enable
中有一个配置了东西,if就会成立,就会执行下面的代码。
基本上if的语法和js中的语法相类似,有if else,if else if等
pug中的一些简单的语法
在pug中可以像js一样声明变量,并且使用三元表达式之类的,有很多类似js的操作都可以在pug中直接编写
例子1:
1 | var top_img = page.top_img || page.cover || theme.default_top_img |
解释:
定义一个变量top_img
将右边的值赋值给这个变量,而右边采用了||这个逻辑运算符
从左到右,优先级逐渐递减,如果没有找到top_img
就找cover
然后接着往下找
例子2:
1 | - top_img = top_img ? top_img : (theme.category_img !== false ? theme.category_img || theme.default_top_img : false) |
解释:
在这个例子中就采用了三元表达式的赋值方法,这个例子主要逻辑是三元表达式中套用三元表达式,这也是js常用的写法
在pug中,生成各种标签的主要语法如下:
1 | .header //生成一个id为header的div标签 |