摘要:jade 的学习笔记
jade 优缺点
优点:
1.超强的可读性
2.灵活易用的缩进
3.块扩展
4.代码默认经过编码处理,以增强安全性
5.编译及运行时有上下文错误报告
6.支持命令行编译
7.可选的内存缓存
8.联合动态的静态标记类、
9.可利用过滤器解析树的处理
缺点:
1.可移植性差
2.调试困难
3.性能不是很出色
基础语法
1.注释
单行注释 // 注释
,编译后的文件可见
非缓冲注释 //- 注释
,编译后的文件不可见(完全不编译)
注释父级,全部子级也会被注释
2.文档声明和标签
a.添加一个doctype只需要doctype,然后再跟一个可选的值,默认是html
b.标签后面跟上#id
,.class
(可以有多个),如果没有标签则使用默认标签div
c.标签属性要写在小括号()
内(id和class属性可以直接写在标签后面),多个属性需要使用逗号,
隔开
d.标签属性写完后空一格是标签内容,子级标签需要换行并落后父级2个或4个空格(tab
键也可以),但一定要使用统一的缩进来嵌套标签
index.jade
1 | doctype html |
3.大段文本
大段文本的有两种处理方式
第一种
1 | p |
第二种
1 | p. |
都会被处理为
1 | <p> |
页面显示如图
如果是
1 | script. |
编译后
1 | <script> |
4.命令行编译
直接命令行编译
压缩
1 | jade index.jade |
非压缩
1 | jade -P index.jade |
实时编译
1 | jade -P -w index.jade |
5.变量传值
a.外部传值,--obj
与对象关联,-O
与文件关联
1 | jade index.jade -P -w --obj "{'name':'<xiaowang>'}" |
或者
1 | // index.json |
执行命令
1 | jade index.jade -P -w -O index.json |
b.内部传值
1 | - var name = "xiaowang" |
内部传值的变量优先级高于外部
6.变量调用
当变量作为内容时
转义
1 | p #{name} |
不转义
1 | p !{name} |
编译后
1 | <p><xiaowang></p> |
当变量作为属性时,有两种写法
1 | p(value='#{name}') |
这两种写法在一般情况下没什么区别,但如果变量没有赋值,前者的value属性值为undefined,后者则不会有value属性
1 | p(value='#{name1}') 有属性 |
编译后
1 | <p value="undefined">有属性</p> |
7.循环
1 | - var arr = ['a','b','c'] |
编译后
1 | <!-- for循环数组--> |
支持多层嵌套
8.条件语句
1 | // if语句 |
编译后
1 | <!-- if语句--> |
mixin混合宏
创建混合宏需要使用mixin
标识符,创建混合宏实例时,需要使用+
标识符,可以相互调用内嵌
无参数
1 | mixin people |
编译后
1 | <p>xiaowang</p> |
有参数
1 | mixin people(name,age) |
编译后
1 | <p>xiaowang</p> |
当参数的个数未知时
1 | mixin people(name,...items) |
编译后
1 | <ul> |
block
如果要替换混合宏的某个部分,可以使用block
标识符来占位
1 | mixin people(name,age) |
编译后
1 | <!-- 无子级--> |
attributes
可以使用mixin
来传递属性,只传递一个参数时
1 | mixin attr(name) |
编译后
1 | <p class="people">xiaowang</p> |
传递多个参数时
1 | mixin attr(name) |
编译后
1 | <p id="person" class="people">xiaowang</p> |
include
引入其他的模块文件,可以是jade、css、html等,例如引入同级目录includes下的header.jade文件
1 | include ./includes/header |
继承
jade使用extends
来继承代码片段,定义使用block
+名字,调用几次便输出几次。注意路径要正确
1 | // head.jade |
编译后
1 | <!DOCTYPE html> |