Jade笔记 欢迎访问新站点: https://www.yidiankuaile.com/post/pug-note 
Jade模版引擎 好吧,它的新版本已经改名叫 pug 了,但我看的书中讲的是 Jade, 而且感觉使用上几乎木有问题,所以就先记 Jade,之后再去看看 pug 的文档。语法应该差不多的。😝
 
标签 Jade模版
1 2 3 4 5 6 body     div         h1 Pracical Jade         p The useful template engine     div         footer © Hah 
 
输出
1 2 3 4 5 6 7 8 9 <body > <div >     <h1 > Pracical Jade</h1 >      <p > The useful template engine</p >  </div > <div >     <footer > ©  Hah</footer >  </div > </body > 
 
变量/数据 // todo 有问题,语法貌似不对
1 2 3 4 5 6 7 h1= title p= body (locals):{ title: "express.js", body: "the book on express" } 
 
属性 紧跟标签之后,用括号括起来
1 2 3 4 5 6 7 meta(charset="utf-8") div(id="content" class="main")     a(href="http://www.google.com", title="google", target="_blank") google     form(action="/login")         input(type="text")         input(type="submit" value="提交")     div(class="hero-init") here we go! 
 
输出
1 2 3 4 5 6 7 8 <meta  charset ="utf-8" /> <div  id ="content"  class ="main" >     <a  href ="http://www.google.com"  title ="google"  target ="_blank" > google</a >      <form  action ="/login" > <input  type ="text" />          <input  type ="submit"  value ="提交" />      </form >      <div  class ="hero-init" > here we go!</div >  </div > 
 
字变量 直接在标签名之后写类(class)或ID,再次使用 | 创建文本内容
1 2 3 4 5 6 div#content     p.lead.center         | webapplog: where code lives         #side-bar.pull-right         span.contact.span4             a(href='/contact') contact us 
 
输出
1 2 3 4 5 6 7 8 9 <div  id ="content" >     <p  class ="lead center" >          webapplog: where code lives         <div  id ="side-bar"  class ="pull-right" > </div >          <span  class ="contact span4" >              <a  href ="/contact" > contact us</a >          </span >      </p >  </div > 
 
注:如果没有写标签名,默认是div标签
文本 通过符号 | 可以输出原始文本
1 2 3 div     | jade is a template engine     | It can be used in Node.js and in the browser Javascript. 
 
输出
1 2 3 4 <div >     jade is a template engine     It can be used in Node.js and in the browser Javascript. </div > 
 
script 和 style 块 将script和style标签里内容写内容块,需要使用点号..
1 2 3 script.     console.log('hello Jade!');     console.log('Good bye!'); 
 
输出
1 2 3 4 <script >     console .log('hello Jade!' );     console .log('Good bye!' ); </script > 
 
JavaScript 代码 可以在jade中写可以操作输出的可执行JavaScript代码,可以使用符号 -,=,!= 这在要输出html元素和注入JavaScript时很有用。(注:个人感觉不好用😢)
1 2 3 4 5 6 7 - var arr = ['<a>','<b>','<c>'] ul     - for(var i=0 ;i<arr.length;i++)         li             span= i             span!= "unescaped:" + arr[i] + "vs."             span="escaped:" + arr[i] 
 
输出
1 2 3 4 5 <ul>     <li><span>0</span><span>unescaped:<a>vs.</span><span>escaped:<a></span></li>     <li><span>1</span><span>unescaped:<b>vs.</span><span>escaped:<b></span></li>     <li><span>2</span><span>unescaped:<c>vs.</span><span>escaped:<c></span></li> </ul> 
 
注释 如果想输出注释,使用JavaScript的注释形式 // ,如果不想输出它,使用 //~
1 2 3 4 // content goes here p Node.js is a non-blocking I/O //- @todo change this line p(id=footer) Copyright 2017 
 
输出
1 2 3 <!-- content goes here--> <p>Node.js is a non-blocking I/O</p> <p>Copyright 2017</p> 
 
if 语句 each 语句 过滤器 读取变量 case 函数minxin include 将逻辑提取到单独的文件里的一种方式,旨在让多个文件重用它,是一种自顶向下的方法
 1 2 // 模版名字和路径不需要加引号 include ./includes/header 
 
extend 是一种自底向上的方法(和include相反),包含的文件决定它要替换主文件的哪一部分。格式为 extend filename 和 block blockname
文件file_a中
1 2 3 4 5 6 block header     p some default text block content     p loading block footer     p copyright 
 
文件file_b中
1 2 3 4 5 extends file_a block header     p very specific text block content     .main-content 
 
输出
file_b.html
1 2 3 <p>very specific text</p> <div class="main-content"></div> <p>copyright</p> 
 
单独使用jade 全局安装
 
执行以下命令,将jade文件编译成html文件
 
发表于 
2017/3/7 19:03:46 ,并被添加「 
jade , 
notes , 
pug , 
模版  」标签,最后修改于 
2017/3/7 19:03:46 本文链接:https://lidong.me/blog/jade-note/