[js高手之路]Node.js模板引擎教程-jade速学与实战2-流程控制,转义与非转义

一、转义与非转义

jade模板文件代码:

 1 doctype html
 2 html
 3     head
 4         meta(charset=‘utf-8‘)
 5         title jade学习-by ghostwu
 6     body
 7         h3  转义与非转义
 8         - var userName = ‘ghostwu‘
 9         - var str = ‘<script>alert("ghostwu");</script>‘
10         div #{userName}
11         div #{str}
12         div !{str}
13         div= userName
14         div= str
15         div!= str
16         div \#{userName}
17         div \!{str}
18         div(data-innerHTML=age)
19         div(data-innerHTML=‘#{age}‘)
20         div(data-innerHTML=‘#{userName}‘)

编译之后的效果:

解释:

#{} : 带有转义效果的输出

!{}: 不转义输出

= : 与#{}效果相同

!= : 与!{}效果相同

\#{}:原样输出#{}

属性后面跟#{age},会把变量解释出来,如果这个变量没有定义,就会输出undefined。在实际情况中,如果没有定义的变量就不要输出,我们可以直接这样做 属性=变量名,他会自动判断该变量是否设置,决定是否输出变量的值或者不要输出属性,如 div(data-innerHTML=userName)  userName我们设置了,所以会编译输出<div data-innerHTML="ghostwu"></div>

二、流程控制(循环) 

jade文件代码:

 1 doctype html
 2 html
 3     head
 4         meta(charset=‘utf-8‘)
 5         title jade学习-by ghostwu
 6     body
 7         h3 流程控制(for...in)
 8         - var userInfo = { userName : ‘ghostwu‘, age : 22 };
 9         ul 用户信息
10             - for ( var key in userInfo )
11                 li= userInfo[key]
12         h3 流程控制(for...each语法糖)
13         ul 用户信息
14             - each val, key in userInfo
15                 li #{key}->#{val}
16         h3 for..each遍历数组
17         - var skills = [‘php‘,‘linux‘,‘javascript‘,‘node.js‘];
18         ul 技能
19             - each item in skills
20                 li #{item}
21         h3 嵌套for...each循环
22         -
23             var userList = [
24                 {
25                     user : ‘ghostwu‘,
26                     skill : [‘javascript‘,‘node.js‘,‘linux‘]
27                 },
28                 {
29                     user : ‘八戒‘,
30                     skill : [‘吹牛b‘, ‘泡妞‘]
31                 }
32             ];
33         ul 用户信息
34             - each val, key in userList
35                 li #{userList[key][‘user‘]}
36                     ul 该用户技能
37                         - each v, k in userList[key][‘skill‘]
38                             li #{v}

编译之后的结果:

 1 <!DOCTYPE html>
 2 <html>
 3   <head>
 4     <meta charset="utf-8">
 5     <title>jade学习-by ghostwu</title>
 6   </head>
 7   <body>
 8     <h3>流程控制(for...in)</h3>
 9     <ul>用户信息
10       <li>ghostwu</li>
11       <li>22</li>
12     </ul>
13     <h3>流程控制(for...each语法糖)</h3>
14     <ul>用户信息
15       <li>userName->ghostwu</li>
16       <li>age->22</li>
17     </ul>
18     <h3>for..each遍历数组</h3>
19     <ul>技能
20       <li>php</li>
21       <li>linux</li>
22       <li>javascript</li>
23       <li>node.js</li>
24     </ul>
25     <h3>嵌套for...each循环</h3>
26     <ul>用户信息
27       <li>ghostwu
28         <ul>该用户技能
29           <li>javascript</li>
30           <li>node.js</li>
31           <li>linux</li>
32         </ul>
33       </li>
34       <li>八戒
35         <ul>该用户技能
36           <li>吹牛b</li>
37           <li>泡妞</li>
38         </ul>
39       </li>
40     </ul>
41   </body>
42 </html>

循环的语法跟原生js差不多,each这里的val, key是当前数组的值和键.

三、条件判断语句

编译之后的结果:

if.else很好理解,跟原生js一样

unless: 给定条件是否不符合要求,如果不符合,就执行下一步.

switch...case语句在jade中的写法

 1 doctype html
 2 html
 3     head
 4         meta(charset=‘utf-8‘)
 5         title jade学习-by ghostwu
 6     body
 7         h3 条件语句
 8         - var skill = ‘linux‘;
 9         case skill
10             when php
11                 p 你会php
12             when java
13                 p 你会java
14             when linux
15                 p 你会linux
16             default
17                 p #{skill}

编译之后:

时间: 2024-10-14 01:15:31

[js高手之路]Node.js模板引擎教程-jade速学与实战2-流程控制,转义与非转义的相关文章

[js高手之路]Node.js模板引擎教程-jade速学与实战4-模板引用,继承,插件使用

一.block 模块复用 把需要复用的模块用block定义 block后面跟上模块的名字,引用一次block 内容就会被复用一次 编译之后的结果: 二,继承模板(extends) 在实际开发中,网站的头部,尾部一般都是公用的,我们可以通过jade的模板继承( extends ) 功能,把公共部分抽象出来,然后让不同的页面继承这些公共部分, 而且继承过来之后还可以重写 新建一个layout.jade模板 这是一个公共的模板,如果我们的首页需要这个公共模板,同时首页需要修改这个公共模板的布局部分(

[js高手之路]Node.js模板引擎教程-jade速学与实战1

环境准备: 全局安装jade: npm install jade -g 初始化项目package.json: npm init --yes 安装完成之后,可以使用 jade --help 查看jade的命令行用法 一.在项目目录下新建index.jade文件 inde.jade代码: 1 doctype html 2 html 3 head 4 meta(charset='utf-8') 5 title 6 body 7 h3 欢迎学习jade 语法规则: 1, 标签按照html的缩进格式写 2

[js高手之路]Node.js模板引擎教程-jade速学与实战3-mixin

强大的mixin mixin类似于函数的功能,可以达到模块复用的效果 mixin show: 定义一个类似函数的功能,名字叫show,里面的就是他的内容 +show: 调用show,每调用一次执行一次里面的内容 编译之后的结果: mixin也可以传递参数 编译之后的结果: mixin支持嵌套调用 编译之后的结果: mixin支持传递模块 编译之后的结果: mixin还可以传递属性 编译之后的结果: mixin支持传递不定参数 编译之后

[js高手之路]Node.js+jade+mongoose实战todolist(分页,ajax编辑,删除)

该系列文章索引: [js高手之路]node js系列课程-创建简易web服务器与文件读写 [js高手之路]node js系列课程-图解express+supervisor+ejs用法 [js高手之路]Node.js实现简易的爬虫-抓取博客所有文章列表信息 [js高手之路]Node.js模板引擎教程-jade速学与实战1-基本用法 [js高手之路]Node.js模板引擎教程-jade速学与实战2-流程控制,转义与非转义 [js高手之路]Node.js模板引擎教程-jade速学与实战3-mixin

[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist

promise主要是用来解决异步回调问题,其实还有好几种比promise更好的方案,后面再说,这节,我们先用promise来改造下,我以前写的一篇文章[js高手之路]javascript腾讯面试题学习封装一个简易的异步队列 中的一道面试题( 页面上有一个按钮,一个ul,点击按钮的时候,每隔1秒钟向ul的后面追加一个li, 一共追加10个,li的内容从0开始技术( 0, 1, 2, ....9 ) ). promise的小实例: 1 function next1(){ 2 return new P

[js高手之路]Node.js实现简易的爬虫-抓取博客所有文章列表信息

抓取目标:就是我自己的博客:http://www.cnblogs.com/ghostwu/ 需要实现的功能: 抓取博客所有的文章标题,超链接,文章摘要,发布时间 需要用到的库: node.js自带的http库 第三方库:cheerio,这个库就是用来处理dom节点的,他的用法几乎跟jquery用法一模一样,所以有了这个利器,写一个爬虫就非常简单 准备工作: 1,npm init --yes 初始化package.json 2,安装cheerio:npm install cheerio --sav

[js高手之路]node js系列课程-创建简易web服务器与文件读写

web服务器至少有以下几个特点: 1.24小时不停止的工作,也就是说这个进程要常驻在内存中 2.24小时在某一端口监听,如: http://localhost:8080, www服务器默认端口80 3.要能够处理基本的请求:如get, post 在node js中创建一台服务器非常的简单,因为node自带http模块,该模块可以帮助我们非常快速搭建一台web服务器,来处理一个简单的请求. 1 const http = require("http"); 2 var server = ht

[js高手之路] es6系列教程 - promise常见用法详解(resolve,reject,catch,then,all,race)

关于promise我在之前的文章已经应用过好几次,如[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist,本文就来讲解下promise的常见用法. 为什么会有promise,他的作用是什么? promise主要是为了解决js中多个异步回调难以维护和控制的问题. 什么是promise? 从图中,我们可以看出,Promise是一个函数,这个函数上有在项目中常用的静态方法:all, race, reject,resolve等,原

[js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表

所谓组合模式,就是把一堆结构分解出来,组成在一起,现实中很多这样的例子,如: 1.肯德基套餐就是一种组合模式, 比如鸡腿堡套餐,一般是是由一个鸡腿堡,一包薯条,一杯可乐等组成的 2.组装的台式机同理,由主板,电源,内存条,显卡, 机箱,显示器,外设等组成的 把一个成型的产品组成部件,分成一个个独立的部件,这种方式可以做出很多灵活的产品,这就是组合模式的优势 比如:家用台式机电脑,要求配置比较低, 这个时候只需要主板+电源+内存条+机箱+显示器+外设就可以了,不需要配置独立显卡 鸡腿堡+鸡翅+紫薯