亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

詳解Node.js模板引擎Jade入門

2024-05-06 16:42:02
字體:
來源:轉載
供稿:網友

Jade是Node.js的一個模板引擎,它借鑒了Haml的很多地方,所以語法上和Haml比較相近。并且,Jade也支持空格。

1、標簽

在Jade里,一行開頭的任何文本都被默認解釋成HTML標簽。并且你只需要你寫開始標簽——注意:不需要加“<>”。因為Jade會幫我們渲染閉合和開始標簽。例如:

body   div     h1 Jade是Node.js的一個模板引擎    p  它借鑒了Haml的很多地方,所以語法上和Haml比較相近。  div     footer © Pandora

上面的Jade模板最終渲染出的HTML代碼是:

<body>  <div>    <h1> Jade是Node.js的一個模板引擎</h1>    <p>它借鑒了Haml的很多地方,所以語法上和Haml比較相近。</p>  </div>  <div>    <footer>© Pandora</footer>  </div></body>

注意:如果沒有寫標簽名,則默認就是div標簽。

2、變量/數據

傳給Jade模板的數據我們稱之為locals。 使用等號“=”來輸出一個變量的值。

(locals):

{  title: "Express.js Guide",  body: "The Comprehensive Book on Express.js"}

Jade code :

h1= titlep= body

渲染輸出的HTML :

<h1>Express.js Guide</h1><p>The Comprehensive Book on Express.js</p>

3、讀取變量

Jade中讀取變量的值是通過#{name}來實現的。例如:

- var  a(href='http://csdn.net',  form(action="/login")    button(type="submit", value="提交")

輸出:

<div id="content" class='main'>  <a href='http://csdn.net'  <form action="/login">    <button type="submit" value="提交">  </form></div>

動態屬性:

動態屬性即屬性的值是動態的,即用一個變量來表示屬性的值。符號“|”可以在新的一行里寫HTML節點內容。例如:

a(href=url, data-active=isActive)label  input(type="checkbox", checked=isChecked)  | yes / no

提供給上面模板的數據:

{  url: "/logout",  isActive: true,  isChecked: false}

最終渲染后輸出的HTML:

<a href="" data-active=" rel="external nofollow" data-active"></a><label>  <input type="checkbox" />yes / no</label>

注意:屬性值為false的屬性在輸出HTML代碼時將被忽略;而沒有傳入屬性值時,將默認為true.

5、字面量

為了省事,可以直接在標簽名之后寫類名和ID名。例如:

div#content  p.lead.center    | Pandora_galen    #side-bar.pull-right // 沒有標簽名,默認為“div”    span.contact.span4      a(href="/contact" rel="external nofollow" rel="external nofollow" ) contact me

渲染輸出的HTML:

<div id="content">  <p class="lead center">  Pandora_galen  <div id="side-bar" class="pull-right"></div>  <span class="contact span4">    <a href="/contact" rel="external nofollow" rel="external nofollow" > contact me </a>  </span></div>

6、文本

使用“|”符號輸出原始文本。

div   | 我兩年前開始學習前端  | 在此之間,我學過了html, jQuery, JavaScript, Python, Css3, HTML5, Bootstrap, D3.js, SVG...而現在我在學Node。并且我已經深深的愛上了前端。

7、Script 和 Style塊

使用“.”符號在HTML里創建

script.  console.log("Hello world!");  setTiemout(function() {    window.location.href = "http://csdn.net"  }, 1000);  console.log("Good bye!");

生成的代碼:

<script>  console.log("Hello world!");  setTiemout(function() {    window.location.href = "http://csdn.net"  }, 1000);  console.log("Good bye!");</script>

同理,style.生成的是<style></style>。

8、JavaScript代碼

使用-,=或!=這三個符號在Jade中寫可以操縱輸出的可執行JS代碼。這在要輸出HTML元素和注入JavaScript時是很有用的。不過,這么做一定要小心避免跨站腳本(XSS)的攻擊。

比如,可以使用!=定義一個array, 輸出標簽數據:

- 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]

生成的代碼如下:

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

模板引擎Jade和Handlebars的一個主要的區別就是: Jade允許在代碼里寫幾乎所有的JavaScript ; 但是,Handlebars則限制了開發人員只能使用少量的內置和自定義的helpers。

9、注釋

Jade的注釋有兩種:

<1>. 輸出到頁面的——“//”
<2>. 不輸出到頁面的—— “//-”

// 普通注釋,會輸出到渲染后生成的HTML頁面p Hello Jade content//- 特殊注釋,不會輸出到HTML頁面p (id="footer") copyright 2016

輸出:

<!-- 普通注釋,會輸出到渲染后生成的HTML頁面 --><p> Hello Jade content </p><p id="footer">copyright 2016</p>  

10、if 語句

給if語句加個前綴-,這樣就可以寫標準的JavaScript代碼了; 也可以不用前綴、不用括號,當然后者更簡潔。

- var user = {}- user.admin = Math.random() > 0.5if user.admin  button(class = "launch") Launch Spacecraftelse   button(class = "login") Log in

此外,還有unless, 它相當于不或者!。

注意: 每行的代碼結尾處并沒有分號“;”

11、each語句

在Jade里迭代很簡單,只需要使用each語句就行了。

- var language = ['JavaScript', 'Node', 'Python', 'Java']div  each value, index in language    p= index + "," + value

輸出:

<div>  <p>0. JavaScript</p>  <p>1. Node</p>  <p>2. Python</p>  <p>3. Java</p></div>

示例2:

- var language = ['JavaScript': -1, 'Node': 2, 'Python': 3, 'Java': 1]div   each value, key in languages    p= key + ":" + value 

輸出:

<div>  <p>JavaScript: -1</p>  <p>Node: 2</p>  <p>Python: 3</p>  <p>Java: 1</p></div>

12、過濾器

過濾器的作用是: 用另一種語言來寫一個文本塊;

p  :markdown    # practical Node.js    [This book](http://csdn.net) really helps to grasp many coponents needed for modern-day web development.

注意: 要想使用Markdown過濾器,需要安裝Markdown模塊,以及Marked和Markdown NPM包。

13、case

- var coins = Math.round(Math.random() * 10)case coins  when 0    p You have no money  when 1    p You have a coin  default    p You have #{coins} coins!

14、Function mixin

如果你使用過sass又或者compass的mixin你肯定不會陌生,而Jade 里mixin的使用方法和它們基本相同。

聲明的語法: mixin name(param, param2, …….)

調用: +name(data)

mixin row(items)  tr    each item, index in items      td= itemmixin table(tableData)  table    each row, index in tableData      +row(row)- var node = [{name: "express"}, {name: "Jade"}, {name: "Handlebars"}]+table(node)- var js = [{name: 'backbone'}, {name: 'angular'}, {name: "emberJS"}]+table(js) 

輸出:

<table>  <tr>    <td>express</td>  </tr>  <tr>    <td>Jade</td>  </tr>  <tr>    <td>Handlebars</td>  </tr></table><table>  <tr>    <td>backbone</td>  </tr>  <tr>    <td>angular</td>  </tr>  <tr>    <td>emberJS</td>  </tr></table>

15、include

include與引入JS和CSS外部文件很相似。它是自頂向下的方法: 在include其它文件的主文件里,我們決定要用什么。主文件會被首先處理(可以在主文件了定義數據locals),然后才會再接著處理主文件里所包含進來的子文件(子文件里可以使用主文件中定義的數據locals);

包含一個Jade模板,用include /path/filename.

例如,在文件A里:

include ./includes/header

注意: 這里不用給模板名以及路徑添加雙引號或者單引號。

再例如,從父目錄開始查找:

include ../includes/footer

注意:不能再文件名和文件路徑中使用變量,因為includes/partials是在編譯時處理的,而不是在執行時。

對于使用Sass、Compass又或者Less的人這些事再熟悉不過的了。

16、extend

extend與include“唱對臺戲”,正好相反,extend是一種自底向上的方法。它所包含的文件決定它要替換主文件中哪那一部分。

使用格式: extend filename 和 block blockname;

示例-1: 在文件file_a里:

block header  p some default textblock content  p loading...block footer  p copyright

示例-2: 在文件file_b里:

extend file_ablock header  p very specific textblock content  .main-content

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人精品一区二区三区电影免费| 欧美影院成年免费版| 亚洲小视频在线观看| 国内精品视频久久| 久久久国产一区| www.日本久久久久com.| 蜜臀久久99精品久久久久久宅男| 国产一区二区三区视频在线观看| 国产色综合天天综合网| 国产精品丝袜久久久久久高清| 欧美一区二区三区免费视| 永久免费看mv网站入口亚洲| 国产欧亚日韩视频| 中文字幕欧美国内| 久久精品电影网站| …久久精品99久久香蕉国产| 韩国视频理论视频久久| 欧美国产日韩免费| 一区二区三区视频免费在线观看| 日韩精品在线视频观看| 91精品久久久久久久久久久久久久| 日韩久久免费视频| 国产精品美乳一区二区免费| 国产亚洲视频中文字幕视频| 欧美一区深夜视频| 91精品美女在线| 成人免费福利在线| 国产精品老女人精品视频| 精品成人乱色一区二区| 国产精品福利网站| 91chinesevideo永久地址| 国产亚洲精品久久久久久| 亚洲国产日韩欧美综合久久| 亚洲欧美制服综合另类| 日韩大陆毛片av| 久久久久国产一区二区三区| 日韩精品在线免费观看| 亚洲国产私拍精品国模在线观看| 色综合导航网站| 国产精品成人一区| 国产精品影片在线观看| 亚洲国产成人精品久久| 亚洲精美色品网站| 中文字幕欧美视频在线| 一区二区三区视频观看| 欧美多人爱爱视频网站| 久久99久久99精品免观看粉嫩| 亚洲已满18点击进入在线看片| 欧亚精品在线观看| 91九色国产在线| 欧美影院在线播放| 欧美日韩亚洲网| 成人免费视频在线观看超级碰| 亚洲男人第一av网站| 久久亚洲国产精品成人av秋霞| 欧美在线视频观看| 国产一区二区美女视频| 91超碰caoporn97人人| 国产精品美女av| 午夜精品久久久久久99热| 亚洲一区中文字幕| 日韩a**站在线观看| 亚洲精品一区二三区不卡| 国产精品久久久久久一区二区| 欧美老女人在线视频| 8x拔播拔播x8国产精品| 午夜精品久久久久久久99热浪潮| 国产精品久久久久av免费| 日韩在线观看你懂的| 黑人巨大精品欧美一区二区三区| 日本久久91av| 日韩视频免费在线观看| 色老头一区二区三区| 午夜精品久久久久久久久久久久| 亚洲第一精品夜夜躁人人爽| 亚洲成人av在线| 中文字幕欧美精品日韩中文字幕| 久久好看免费视频| 萌白酱国产一区二区| 久久久久久久久国产精品| 日本精品视频在线| 日韩免费av在线| 久久久久久久久久久人体| 57pao国产精品一区| 亚洲精品一区中文| 成人性生交大片免费看小说| 亚洲精品久久久久中文字幕二区| 色综合久久久888| 高清日韩电视剧大全免费播放在线观看| 欧洲美女免费图片一区| 精品人伦一区二区三区蜜桃免费| 亚洲欧美另类国产| 久久精品99国产精品酒店日本| 精品国产乱码久久久久久虫虫漫画| 人妖精品videosex性欧美| 国产精品爽黄69| 久久精品国产99国产精品澳门| 国产精品一区二区女厕厕| 久久久久这里只有精品| 亚洲欧美自拍一区| 亚洲丝袜在线视频| 国产精品视频xxxx| 欧美午夜激情小视频| 国产欧美一区二区三区久久人妖| 久久久久久亚洲| 最近2019免费中文字幕视频三| 欧美丰满少妇xxxxx做受| 欧美三级免费观看| 国产精品jvid在线观看蜜臀| 亚洲电影在线观看| 日本一区二区不卡| 国产丝袜精品第一页| 亚洲性xxxx| 日韩激情片免费| 国产一区红桃视频| 国产日韩欧美综合| 国产精品网红福利| 亚洲美女视频网站| 久久国产精品免费视频| 成人国产亚洲精品a区天堂华泰| 中文字幕免费精品一区| 95av在线视频| 欧美激情精品在线| 一区二区在线视频播放| 日本午夜精品理论片a级appf发布| 91视频88av| 亚洲r级在线观看| 国产97在线视频| 欧美一乱一性一交一视频| 亚洲激情在线观看视频免费| 午夜精品久久久久久久男人的天堂| 日韩视频中文字幕| 欧美黄色免费网站| 欧美激情在线有限公司| 国产精品69久久久久| 亚洲奶大毛多的老太婆| 欧美性xxxxxxxxx| 日韩高清av一区二区三区| 高清欧美性猛交| 日韩亚洲欧美成人| 91免费福利视频| 亚洲国产精品人久久电影| 精品久久久久久电影| 欧美亚洲另类视频| 成人在线视频网| 亚洲午夜未删减在线观看| 欧洲美女7788成人免费视频| 亚洲第一精品夜夜躁人人躁| 揄拍成人国产精品视频| 亚洲另类欧美自拍| 欧美国产乱视频| 久久精品免费电影| 另类少妇人与禽zozz0性伦| 成人黄色在线观看| 国产97在线|亚洲| 国产激情999| 日韩美女视频免费看| 日韩一区二区三区在线播放| 久久色免费在线视频| 91黑丝在线观看| 亚洲自拍偷拍福利| 欧美美最猛性xxxxxx| 国产成人激情小视频| 欧美插天视频在线播放|