说明

Pug原名不叫Pug,是大名鼎鼎的jade,后来由于商标的原因,改为Pug,哈巴狗。其实只是换个名字,语法都与jade一样。丑话说在前面,Pug有它本身的缺点——可移植性差,调试困难,性能并不出色,但使用它可以加快开发效率。本文将详细介绍pug模板引擎。

安装


1.sudo npm install jade -g
2.sudo yarn global add jade

常用命令

普通编译,会在同目录下生成编译后的 test.html 文件


jade test.jade
# --pretty | -P (大写) 美化输出的 html 使之带有缩进等
jade -P test.jade
# --out | -o <dir> 将编译后的 html 输出到指定文件夹
jade -P test.jade --out ./output
# --obj | -O <path|str> 向 jade 模板中传递变量,需要传递一个 json 或者一个 json 文件的路径
jade -P --obj '{testName: "this is tetsName"}' test.jade
jade -P -O ./config.json test.jade
# --watch | -w 监听文件变化,自动重新编译
jade -P -w test.jade

标签

  • jade 中的标签不再含有 html 中的 尖括号,直接写标签名即可,无论单双标签,只写以这个标签名;
  • 标签间嵌套关系使用缩进加换行实现;
  • 标签后第一个空格后边的内容会被编译成标签内的文本内容

    doctype html
    html(lang="en")


    head
    title Document
    // 通过换行加缩进实现标签嵌套
    body
    p 标签后的文本
    // 通过 ‘:’ 实现行内的嵌套
    p: a 文本
    // 自定义的标签加上 ‘/’ 表示自闭和标签(html 默认自闭和标签可以不用)
    foo/

属性

一般属性要添加在紧挨标签的括号里() ,多个属性用 , 隔开,() 内实际上是一个 javascript 的环境,可以在这里进行基础的运算


body
// ‘=’ 链接属性和值,多个属性用 ‘,’ 隔开
p: a(href="www.baidu.com", target="_blank") 链接
// 属性中可以做基础的 javascript 计算
p
- var link = 'www.baidu.com'
a(href=link.toUpperCase()) 链接
// 属性多的时候可以换行,这个时候可以不用逗号分隔
p: input(
type="checkbox"
name="chexkbox"
checked=true
)
p(content="<br/>") 伪代码 ‘=’ 默认是转义的
p(content!="<br/>") 伪代码 '!=' 表示不转义

class 与 style 属性


body
// 使用 '.' 链接标签和类名或者多个类名
p.p-class.p-class-add 内容
// 也可以定义变量然后,将其通过普通方式传入,可以传入数组
- var classes = ['p-class', 'p-class-1', 'p-class-2'];
p(class=classes)
// 多个 class 属性,值会累加
p.class-name(class="class-1", class=classes)
// style 属性的值可以是一个字符串也可以是一个样式对象
p(style={color: 'red', background: 'blue'})
p(style="color: red;background: blue;")

文本


body
p 这是单行的文本
p 这是多行文本
| 使用‘|’区分多行文本
| 注意同样要使用缩进
div.
'.'用来标记一块文本
可以是多行的,在这里可以
<a>写 html 标签</a>
script.
// 在这里直接写 javascript 代码
console.log('first line');
console.log('second line');
console.log('last line');

变量

  • -var 用于声明变量
  • {variablesName} 用来使用变量,输出的变量数据会被转码
  • {variablesName} 通用用来使用变量,但是输出的变量数据不会被转码
  • tagName=variablesName 标签名等于变量名,与 #{variablesName}一样,将转码后的变量值赋值为标签内容,区别在于,如果变量未定义 #{} 会返回 undefined;= 会将其忽略
  • tagName!=variablesName 与 tagName=variablesName 类似,除了不转义变量值
  • 如果要输出 #{} 或者 !{} 可以再其前面加上反斜杠 #{xxx} | !{xxx}

持续更新,希望支持。

来源:https://segmentfault.com/a/1190000015907031

pug的安装与使用的更多相关文章

  1. jade(pug)学习和使用

    由于版权问题,现已改名pug.但无须担心,几乎没什么区别.就算依然使用jade也不会有太大影响. 慢慢迁移过渡即可   # 官网 https://pugjs.org # github https:// ...

  2. 我最喜欢的模板jade(pug)学习和使用

    由于版权问题,现已改名pug.但无须担心,几乎没什么区别.就算依然使用jade也不会有太大影响. 慢慢迁移过渡即可 # 官网 https://pugjs.org # github https://gi ...

  3. 在vue中使用pug

    安装pug npm i pug pug-loader pug-cli pug-filters -D pug :安装pug pug-loader:pug的loader pug-cli:pug 编译工具 ...

  4. 前端基于VUE的v-charts的曲线显示

    目录 前端基于VUE的v-charts的曲线显示 1. 应用背景 2. 分析数据生产者生成 3. 取出数据消费者 4. 前端显示 4.1 安装V-charts插件 4.2 引入veline曲线插件 4 ...

  5. Vue-cli3 简qian易yi教程

    原文地址 对于没有了解过 vue-cli3 的童鞋,建议先去看看官方的教程: 传送门 新版本的新特性 1. 插件 使用 cli 的插件,可以很快的搭建一个项目的结构.如 axios 的插件 vue-c ...

  6. Vue学习(十三)模版引擎算是预处理器吗?

    前言 今天在看vue-loader预处理器配置相关的内容,突然看到了Pug,然后有了一个疑问:模版引擎原来是预处理器吗? 答案是:YES 说明 这里重点讨论使用不同的js模板引擎作为预处理器, 下面示 ...

  7. Coreseek Windows下安装调试

    由于项目需要全文检索,后面就去网上查了下资料,找到了Sphinx[中文是狮身人面像]这个全文检索引擎,听说挺好用的,不过没有中文分词.后面又去找了一下,找到了Coreseek,一款中文全文检索/搜索软 ...

  8. nodejs学习笔记(2)--Express下安装模版引擎ejs

    成功安装完express后,输入express -help,根据提示安装ejs(如下图): 根据提示-e实现安装ejs,注意此处有坑:之前安装的时候根据教程(node.js开发指南第五章5.2.2节) ...

  9. Strider安装(Ubuntu)

    安装: git clone https://github.com/Strider-CD/strider.git && cd strider nam install 然而还是出现一大波错 ...

随机推荐

  1. redis Hash 命令

    HDEL key field2 [field2] 删除一个或多个哈希表字段 HEXISTS key field 查看哈希表 key 中,指定的字段是否存在. HGET key field 获取存储在哈 ...

  2. 更新CM版本

    照着这个文章搭建的 https://blog.csdn.net/sinat_32176947/article/details/79597073 需要注意问题有 离线需要自己配置yum 地址base地址 ...

  3. net.sf.json JSONObject与JSONArray使用实例

    实例自己想的一个实例应用场景:一个人可以有多个角色,例如:在家中是儿子,在学校是学生,在公司是程序员,一个人还可以办好多业务 * 每个业务好多个人都可以办,则标记(mark)就是记录这唯一标识的(如i ...

  4. 2018-8-10-docfx-做一个和微软一样的文档平台

    title author date CreateTime categories docfx 做一个和微软一样的文档平台 lindexi 2018-08-10 19:16:51 +0800 2018-2 ...

  5. Leetcode963. Minimum Area Rectangle II最小面积矩形2

    给定在 xy 平面上的一组点,确定由这些点组成的任何矩形的最小面积,其中矩形的边不一定平行于 x 轴和 y 轴. 如果没有任何矩形,就返回 0. 示例 1: 输入:[[1,2],[2,1],[1,0] ...

  6. win8 风格框架

    http://metroui.org.ua/挺不错 bootstrap 系列的.

  7. Python_day01——字符串

    https://www.cnblogs.com/A-FM/p/5691468.html def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 # 获 ...

  8. 第五章 Odoo 12开发之导入、导出以及模块数据

    大多数Odoo 模块的定义,如用户界面和安全规则,实际是存储在对应数据表中的数据记录.模块中的 XML 和 CSV 文件不是 Odoo 应用运行时使用,而是载入数据表的手段.正是因为这个原因,Odoo ...

  9. webpack处理字体文件

    1. 安装 file-loader npm install file-loader --save-dev 2. 在webpack.config.js中配置 module.exports={ //... ...

  10. php报错:Notice: iconv(): Wrong charset, conversion from `GBK' to `UTF8' is not allowed

    代码写错了 $raw_data = iconv("GBK", "UTF8", $raw_data); 改成 $raw_data = iconv("GB ...