学习jade模板引擎的使用
首先当然还是安装啦,我们可以执行
npm install -g jade
来全局安装我们的jade,然后新建一个index.jade
的文件。用jade语法书写这个jade文件,jade的语法和emment有点类似。通过执行
jade index.jade
来编译这个jade文件,这时候我们就能在文件中看到新生成了一个index.html的文件,打开一看发现是压缩后的html,为了编译出不是压缩过后的html文件,我们在执行命令的时候加上一个参数-P
,如:
jade -P index.jade
为了在书写jade文件后能够实时生成html文件,可以加上参数-w,如:
jade -P -w index.jade
界面如下:
标签与元素之间要有间隔以作区分
子元素在父元素下要有缩进
如果元素太多需要换行怎么办呢?需要加上一个点:
p.
1. aa
2. bb
3. cc
而且这里p.下面的元素前的空只能空两个空格的位置。
如果标签里不仅有文字,还有标签,要怎么写呢?
方法一:
p.
1. aa<strong>11</strong>
2. bb<strong>
方法二:
p
| 1. aa
strong 11
| 2. bb
jade里的注释有三种:
单行注释:
// h3.title
非缓冲注释:
//- #id.classname
块注释:
//-
有什么区别呢?
单行注释好理解,并且这种注释会编译到我们的html文件里面,非缓冲注释则不会编译到html文件里面,块注释自然是注释掉一个代码块了。
以上提到的有:
文档声明和头尾标签
标签语法
元素属性
注释
混排的多段文本
然后jade变量传递的方式有几种,如,可以直接定义一个变量,也可以通过命令行传变量,也可以通过json传变量。
转义和非转义:
p #{htmlData}
p !{htmlData}
还可以写成=的形式:
p= htmlData
p!= htmlData
如果希望编译后有#和{}存在,为了避免被编译掉可以使用\
p \!{htmlDa}
p \#{htmlDa}
如果变量没有值就会编译成undefined,如果不想它编译成undefined想直接为空的话可以:
input(value=newData)
流程代码-for-each-while:
- var imooc = {
course: 'jade',
level: 'high'
};
- for(var k in imooc)
p=imooc[k]
可以打印出jade和high:
<p>jade</p>
<p>high</p>
有一点需要注意,使用tab和space按键的时候,在一行中只能使用一种否则会提示:
Invalid indentation, you can use tabs or spaces but not both
我是习惯前面用tab缩进,中间使用空格所以报错了。
jade中使用while循环:
- var n = 0;
ul
while n<4
li n++
代码重用:
mixin lesson
p imooc jade study
+lession
mixin用来声明一个模块。
总结一下需要注意的点:
doctype html
缩进:
jade和python都是对缩进敏感的语法形式,一定一定要保持使用统一的缩进格式
注释:
分为编译到源文件和不编译到源文件
属性:
可以根据条件设置属性的语法形式
文本:
单行文本
多行文本
代码嵌入:
将js嵌入jade有三种方法:
1.使用-
2.使用=
3.使用!=
插值语法
条件语句
分支语句
- var friends = 10
case friends
when 0
p you have no friends
when 1
p you have a friend
default
p you have #{friends} friends
生成的HTML:
<p>you have 10 friends</p>
遍历语句
数组遍历:
ul
each val, index in ['zero', 'one', 'two']
li= index + ':' + 'val'
对象遍历:
ul
each val, index in {1 : 'one', 2 : 'two', 3 : 'three'}
li= index + ':' + val
循环语句
-var n = 0
ul
while n < 4
li= n++
mixins
includes
在需要的地方导入片段
//- index.jade
doctype html
html
include ./includes/head.jade
body
h1 My Site
p Welcome to my super lame site.
include ./includes/foot.jade
继承
extends