1,Jade里可以省略尖括号,直接写标签名

2,标签间的嵌套关系用换行加空格来实现

3,紧接在标签名后加上.xx或#xx,就能给标签添加css类名和id,如果不写标签名默认就是div

4,标签属性写入()括号内,多个属性用逗号隔开

5,多行文本有两种写法。第一种写法是在标签名后紧接一个.点,这样后面的内容会被Jade模板视作文本域而保留换行符

p.
第1行文本
第2行文本
第3行文本
第4行文本 //由于是文本域,里面要嵌套标签时,只能写原生的HTML标签了

多行文本的第二种写法是在每行前加上|竖线符

p
span 第1行文本
| 第2行文本
| 第3行文本
| 第4行文本

不仅可用于p标签等,也常见于style和script标签

script.
console.log("open mind");
console.log("learning quick");
console.log("work hard");

6,变量

变量声明很简单,前面加上-横杠,变量只要#{变量名}

- var cs = 'UTF-8'
meta
(charset='#{cs}') //注意用#{}输出的变量数据会执行HTML转码
- var alertData = '<script>alert(1);</script>'
p #{alertData} // 标签后面紧接=等号(不转义用!=)来输出变量
p= alertData
p!= alertData
//如果不想HTML转码,可以将#改成!叹号:
- var alertData = '<script>alert(1);</script>'
p !{alertData}

 //如果页面就想输出#{}和!{}呢?可以前面加\反斜杠来让Jade引擎不编译变量

p \#{alertData}
p \!{alertData}

//#{}如果变量未定义,将会编译成undefined作为初始值。但用=等号来编译变量的话,如果变量未定义就忽略

7,语句,Jade模板支持JavaScript语句,

  • if-else
  • unless
  • case-when
  • for-in
  • each-in
  • while
//if-else

- var author = 'Jack';
if author
p 作者:#{author}
else
p 无作者 //编译出来的结果
<p>作者:Jack</p>
//case-when

- var authors = ['Jack', 'Bill'];
case authors[]
when 'Jack'
p 作者是Jack
when 'Bill'
p 作者是Bill
default
p 无作者
//循环遍历用for-in(注意上面的if-else,case-when语句前不用像变量那样加上-横杠,但for的前面要加上-横杠。如果漏写-横杠,会被解析

- var person = {name:'Jack', gender: 'Male'}
- for (var prop in person)
p= person[prop] //编译出来的结果
<p>Jack</p>
<p>Male</p> //循环遍历也可以用each-in
- var employee = {name:'Jack', gender: 'male'}
- each value, key in employee
p #{key}: #{value}
- var language = ['Java', 'JavaScript', 'C++']
ul
each item in language
li #{item} //编译出来的结果
<p>name: Jack</p>
<p>gender: male</p>
<ul>
<li>Java</li>
<li>JavaScript</li>
<li>C++</li>
</ul>

//循环遍历也可以用while

- var n =
ul
while n <
li= n++

8,Jade也支持Mixin,可以理解为function

//调用时函数名前加上+加号

mixin
sayHi
p Hi
+sayHi //编译出来的结果
<p>Hi</p>
mixin personInfo(name, hobbies)
 +sayHi
p #{name}'s hobbies:
ul.hobby
each hobby in hobbies
li= hobby
+personInfo('Jack', ['movie', 'music'])

9,模板,Jade用block和extends来实现模板的继承

//xblock真正的作用在于占位,供子文件继承,可以理解为传统OO语言里的虚函数。父文件里定义的block,子文件里用extends来继承并重写。
//header.jade
doctype html
html
head
meta(charset='#{charset}')
block scripts
script(src='jquery.js')
script(src='underscore.js')
script(src='backbone.js')
body
block content
p please write content
//继承上面的文件header.jade
extends header //重写header.jade中的content
block content
h1.titleClass#titleID #{title}
a(href='http://www.jackzxl.net', target='_blank') 我的主页
……

//除继承外还可以用include包含。Include会将内容全拷贝进去,不会像extend能进行替换


10,过滤器

只要npm安装好后,用:冒号+模块名就能声明使用这些模块

:markdown
...
:less
...
:coffee
...

node-express-2-jade的更多相关文章

  1. Express创建并运行node项目(Jade和EJS模版引擎)

    1.创建Node项目 [Jade模板] > express nodeJade express创建项目若不显示指定模板,默认使用Jade,以下写法都可以: express -jade nodeJa ...

  2. node+express+jade搭建一个简单的"网站"

    1.建立工程文件夹:my_jade 2.下载express和jade包到本地.我个人不喜欢下载成全局的,我喜欢下到工程文件夹中去. 3.建立相关的文件夹和文件. index.js: style.css ...

  3. Node+Express+node-mysql 实战于演习 全套mysql(增删改查)

    最近这段时间研究Node感觉不错,自己做了一个增删改查,虽然有些简陋,但是思想是想通的,其实所有项目都是增删改查,有助于初学者快速掌握Node 首先 本实例展示的是基于Node+Express+nod ...

  4. Node Express 4.0 安装

    前言 今天想要用nodejs 写个后台服务,很久之前看过node express 框架,可真当向下手安装的时候,发现好多命令都不记得了.写完后台服务,没事了,总结了下安装过程,记录一下,以便以后查阅方 ...

  5. node express

    在某QQ群里,发现大家都在搞node,为了不被out,这周主要研究了一下,还挺高大上. 参考了下资料,适合初学者学习. Node和NPM的安装够便捷了,不细说...有几点基础顺手提一下: 安装命令中的 ...

  6. Webpact打包React后端Node+Express

    Webpact打包React后端Node+Express 前言 React官方推荐用Browserify或者Webpack 来开发React组件. Webpack 是什么?是德国开发者 Tobias ...

  7. express框架+jade+bootstrap+mysql开发用户注册登录项目

    完整的项目代码(github):https://github.com/suqinhui/express-demo express是基于Node.js平台的web应用开发框架,用express框架开发w ...

  8. node+express+mongodb初体验

    从去年11月份到现在,一直想去学习nodejs,在这段时间体验了gulp.grunt.yeomen,fis,但是对于nodejs深入的去学习,去开发项目总是断断续续. 今天花了一天的时间,去了解整理整 ...

  9. microsoft webMatrix 使用 IISnode 进行node express 开发

    微软的microsoft webMatrix是一个免费的开发工具,我们可以使用它进行node 开发并利用iisnode 模块进行iis 的nodejs网站的维护,还是比较方便的. 一个简单的node ...

  10. 【原】小玩node+express爬虫-2

    上周写了一个node+experss的爬虫小入门.今天继续来学习一下,写一个爬虫2.0版本. 这次我们不再爬博客园了,咋玩点新的,爬爬电影天堂.因为每个周末都会在电影天堂下载一部电影来看看. talk ...

随机推荐

  1. 解决 httpclient 下 Address already in use: connect 的错误

    最近做httpclient做转发服务,发现服务器上总是有很多close_wait状态的连接,而且这些连接都不会关闭,最后导致服务器没法建立新的网络连接,从而停止响应. 后来在网上搜索了一下,发现解决的 ...

  2. 基于OpenCV做“三维重建”(0)-- OpenCV3.2+VIZ6.3.0在vs2012下的编译和使用

    一.问题提出         ViZ对于显示3维的效果图来说,非常有帮助:我在使用OpenCV进行双目测距的过程中,有一些参数希望能够通过可视化的方法显示出来,所以参考了这方面相关的资料.做了一些实验 ...

  3. 顺手写一下HTTP协议

    本文目录 一 什么是HTTP协议 二 Http的特点 三 Http报文 回到目录 一 什么是HTTP协议 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写 ...

  4. Servlet和Filter的区别

    1.Filter是一个接口,而Servlet是一个类继承于Httpservlet 2.生命周期的不同,Filter在Web App被加载时,创建该Filter的实例,并调用init()方法(仅创建一个 ...

  5. Vue-admin工作整理(五):守卫导航

    一.作用: 它可以帮我们在路由发生跳转,到导航结束的时间内,做一些相应的逻辑处理,分为:全局守卫,和专项守卫 1.全局收尾: (a).前置守卫:router.beforeEach(to,from,ne ...

  6. Vue小项目二手书商城:(三)前端渲染数据

    实现内容: axios取到的数据在前端使用(父子组件各自应该怎么使用) 一.简单使用(在哪取在哪用) 1.在App.vue中script中加上data(data专属于当前组件,父子组件传参通过prop ...

  7. Java中封装类型.valueOf()

    @Test public void test() { Integer i3 =128; Integer i4=128; boolean integerGT127=i3==i4; //false Sys ...

  8. Ubuntu16.04 使用sudo cat EOF 编辑文件,提示Permission denied错误的解决办法

    一.执行命令报错 在Ubuntu16.04下,使用如下命令,修改hosts主机文件,居然提示权限错误: catty@node186:~$ sudo cat <<EOF > /etc/ ...

  9. vue页面引入外部js文件遇到的问题

    问题一:vue文件中引入外部js文件的方法 //在vue文件中 <script> import * as funApi from '../../../publicJavaScript/pu ...

  10. python爬虫采集网站数据

    1.准备工作: 1.1安装requests: cmd >> pip install requests 1.2 安装lxml: cmd >>  pip install lxml ...