您的位置:首页 > 其它

jade模板基本用法

2015-05-10 16:44 169 查看

Jade是一款高性能简洁易懂的模板引擎,Jade是Haml的Javascript实现,在服务端(NodeJS)及客户端均有支持。

功能

客户端支持
超强的可读性
灵活易用的缩进
块扩展
代码默认经过编码处理以增强安全性
编译及运行时的上下文错误报告
命令行编译支持
HTML5模式(使用!!!5文档类型)
可选的内存缓存
联合动态和静态标记类
利用过滤器解析树的处理
支持 Express JS
利用each透明的循环objects,arrays甚至不可枚举对象
块注释
不需要标记前缀
AST过滤器
过滤器

:sass 需要安装sass.js
:less 需要安装less.js
:markdown 需要安装markdown-jsnode-discount
:cdata
:coffeescript 需要安装coffee-script

Vim语法文件
TextMate包
Screencasts

其它语言实现

php
Scala
Ruby

安装

通过npm:

浏览器支持

可以通过下面命令将jade编译为客户端浏览器兼容的文件:

或者,如果你已经通过npm安装了uglifyjs(npminstalluglify-js),可以通过下面的命令同时创建两个文件:

公开API

Options

执行作用域(this)scope
本地变量对象locals
处理异常及缓存时使用filename
通过文件名将Javascript缓存在内存中cache
输出生成的标记和函数体debug
替换jade默认编译引擎compiler

语法

行尾

在解析前会将 CRLF 和 CR 转换为 LF.

标记

标记是一行的第一个单词:

会被转换为 <html></html>

标记也可以有id:

这将被渲染成<div id=”container”></div>

如何处理类?

渲染为: <div class=”user-details”></div>

多个class?并且还有id?

渲染为:<div id=”foo” class=”bar baz”></div>

总写div确实很烦人,可以省略之:

输出: <div id=”foo”></div><div class=”bar”></div>

标记文本

只需要将文本内容放在标记后面:

渲染为 <p>wahoo!</p>.

酷,但是如何处理大段文本呢?

渲染为 <p>foo bar baz rawr…..</p>

内插法?是的,这两种类型的文本都可以使用内插法,如果我们传入{ locals: { name: ‘一回’, email: ‘xianlihua[at]gmail.com’ }},可以这样做:

输出:<div id=”user”>一回 <xianlihua[at]gmail.com></div>

出于某种原因需要输出#{}?转义之:

这样就得到了:<p>#{CSSer, 关注Javascript技术}</p>

也可以使用反转义变量!{html},下面的代码将输出script标记:

包含文本的嵌套标记也可以使用文本块:

或者直接使用标记文本:

只接受纯文本的标记,如script,style,以及textarea不需要开头的|字符,例如:

再次作为替代方案,我们可以使用点号’.'来表示一个文本块,例如:

输出:

如果点号’.'与标记之间有空格,Jade解析其会忽略它,将其作为文本处理:

输出:

注释

单行注释当前看起来与Javascript一致,即“//”,单行注释的内容必须放在同一行上:

将会输出:

Jade也支持非缓冲注释,只需增加一个横杠:

输出:

块注释

块注释会依据缩进进行处理:

输出:

Jade也支持条件注释,例如:

输出:

嵌套

Jade支持通过嵌套来以自然的方式定义标记:

块扩展

块扩展允许创建单行的简洁嵌套标记,下面的示例与上例输出相同:

特性

目前Jade支持’(‘和’)'的特性定界符。

另外我们也可以使用冒号(:)来作为分割符:

Boolean特性也被支持:

值为变量的Boolean特性只有在值为true时输出:

分拆在多行也能正常解析:

文档类型

利用!!!来增加页面的文档类型:

将会输出过渡型文档类型,然而:

将会输出HTML5的文档类型,下面是默认定义的文档类型,这也可以很容易的被扩展:

要修改默认值只需改变:

过滤器

过滤器以冒号(:)作为前缀,如 :markdown 将会对文本进行函数处理,(一回注:类似Smarty的变量调节器),本页开始处列出了目前Jade支持的过滤器。

渲染后:

过滤器也可以处理解析树,通常过滤器可以正常处理文本块,但是通过传入规则的块过滤器可以做任何它能做的。

代码

Jade目前支持三种类型的可执行代码,第一种以-为前缀,不会被缓冲:

这可被用于条件或循环:

由于Jade的缓冲技术,下面的代码是有效的:

甚至详细的迭代循环:

任何你希望的都可以实现!

接下来我们转义了缓冲代码,用于缓冲返回值,以等号(=)作为前缀:

输出: bar<h1>bar</h1>. 被’='缓冲的代码会默认经过转义以增强安全性,要输出为转义的值需要使用 !=:

一个允许使用”vanilla”Javascript的例外,是 – each 标记,其表现形式为:

实现循环数组的例子:

输出:

循环对象的键和值:

这会输出 <li>foo: bar</li>

也可以进行嵌套循环:

当一个属性为undefined,Jade会输出空串,例如:

近期的Jade版本会输出空字符串而不是undefined:

命令行工具:bin/jade

输出html到标准输出(stdout):

生成 examples/*.html :

传入参数:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: