学习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

界面如下:

img

标签与元素之间要有间隔以作区分

子元素在父元素下要有缩进

如果元素太多需要换行怎么办呢?需要加上一个点:

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