在Node.js中詳細解讀Jade入門
這篇文章主要介紹了詳解Node.js模板引擎Jade入門,Jade是Node.js的一個模板引擎,現在分享給大家,也給大家做個參考。
Jade是Node.js的一個模板引擎,它藉鑒了Haml的很多地方,所以語法上和Haml比較相近。並且,Jade也支援空格。
1、標籤
在Jade裡,一行開頭的任何文字都被預設解釋成HTML標籤。而你只需要你寫開始標籤-注意:不需要加上「<>」。因為Jade會幫我們渲染閉合和開始標籤。例如:
body p h1 Jade是Node.js的一个模板引擎 p 它借鉴了Haml的很多地方,所以语法上和Haml比较相近。 p footer © Pandora
上面的Jade模板最終渲染出的HTML程式碼是:
<body> <p> <h1> Jade是Node.js的一个模板引擎</h1> <p>它借鉴了Haml的很多地方,所以语法上和Haml比较相近。</p> </p> <p> <footer>© Pandora</footer> </p> </body>
注意:如果沒有寫標籤名,則預設就是p標籤。
2、變數/資料
傳給Jade模板的資料我們稱為locals。使用等號“=”來輸出一個變數的值。
(locals):
{ title: "Express.js Guide", body: "The Comprehensive Book on Express.js" }
Jade code :
h1= title p= body
渲染輸出的HTML :
<h1>Express.js Guide</h1> <p>The Comprehensive Book on Express.js</p>
3、讀取變數
Jade中讀取變數的值是透過#{name}來實現的。例如:
- var title = "Node" p I love #{title}
在模板被編譯時變數的值就會被處理,所以,不要在可執行JavaScript(-)裡使用它。
4、屬性
屬性緊跟在標籤之後,用「()」括起來,多屬性用「,」分隔。例如:body (name1 = “value1”, name2 = “value2”)。
p(id="content", class='main') a(href='http://csdn.net', title='csdn主页', target='_blank') CSDN:中国软件联盟 form(action="/login") button(type="submit", value="提交")
#輸出:
<p id="content" class='main'> <a href='http://csdn.net' title='csdn主页' target='_blank'> CSDN:中国软件联盟</a> <form action="/login"> <button type="submit" value="提交"> </form> </p>
動態屬性:
#動態屬性即屬性的值是動態的,也就是用變數來表示屬性的值。符號「|」可以在新的一行裡寫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名。例如:
p#content p.lead.center | Pandora_galen #side-bar.pull-right // 没有标签名,默认为“p” span.contact.span4 a(href="/contact" rel="external nofollow" rel="external nofollow" ) contact me
渲染輸出的HTML:
<p id="content"> <p class="lead center"> Pandora_galen <p id="side-bar" class="pull-right"></p> <span class="contact span4"> <a href="/contact" rel="external nofollow" rel="external nofollow" > contact me </a> </span> </p>
6、文字
使用「|」符號輸出原始文字。
p | 我两年前开始学习前端 | 在此之间,我学过了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.生成的是。
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.5 if user.admin button(class = "launch") Launch Spacecraft else button(class = "login") Log in
此外,還有unless, 它相當於不或者! 。
注意: 每行的程式碼結尾處並沒有分號「;」
11、each語句
在Jade裡迭代很簡單,只需要使用each語句就行了。
- var language = ['JavaScript', 'Node', 'Python', 'Java'] p each value, index in language p= index + "," + value
輸出:
<p> <p>0. JavaScript</p> <p>1. Node</p> <p>2. Python</p> <p>3. Java</p> </p>
範例2:
- var language = ['JavaScript': -1, 'Node': 2, 'Python': 3, 'Java': 1] p each value, key in languages p= key + ":" + value
#輸出:
<p> <p>JavaScript: -1</p> <p>Node: 2</p> <p>Python: 3</p> <p>Java: 1</p> </p>
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= item mixin 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 text block content p loading... block footer p copyright
示例-2: 在文件file_b里:
extend file_a block header p very specific text block content .main-content
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
以上是在Node.js中詳細解讀Jade入門的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

要連接 MySQL 資料庫,需要遵循以下步驟:安裝 mysql2 驅動程式。使用 mysql2.createConnection() 建立連接對象,其中包含主機位址、連接埠、使用者名稱、密碼和資料庫名稱。使用 connection.query() 執行查詢。最後使用 connection.end() 結束連線。

Node.js 中存在以下全域變數:全域物件:global核心模組:process、console、require執行階段環境變數:__dirname、__filename、__line、__column常數:undefined、null、NaN、Infinity、-Infinity

Node.js 安裝目錄中有兩個與 npm 相關的文件:npm 和 npm.cmd,區別如下:擴展名不同:npm 是可執行文件,npm.cmd 是命令視窗快捷方式。 Windows 使用者:npm.cmd 可以在命令提示字元中使用,npm 只能從命令列執行。相容性:npm.cmd 特定於 Windows 系統,npm 跨平台可用。使用建議:Windows 使用者使用 npm.cmd,其他作業系統使用 npm。

PiNetwork節點詳解及安裝指南本文將詳細介紹PiNetwork生態系統中的關鍵角色——Pi節點,並提供安裝和配置的完整步驟。 Pi節點在PiNetwork區塊鏈測試網推出後,成為眾多先鋒積極參與測試的重要環節,為即將到來的主網發布做準備。如果您還不了解PiNetwork,請參考Pi幣是什麼?上市價格多少? Pi用途、挖礦及安全性分析。什麼是PiNetwork? PiNetwork項目始於2019年,擁有其專屬加密貨幣Pi幣。該項目旨在創建一個人人可參與

Node.js 和 Java 的主要差異在於設計和特性:事件驅動與執行緒驅動:Node.js 基於事件驅動,Java 基於執行緒驅動。單執行緒與多執行緒:Node.js 使用單執行緒事件循環,Java 使用多執行緒架構。執行時間環境:Node.js 在 V8 JavaScript 引擎上運行,而 Java 在 JVM 上運行。語法:Node.js 使用 JavaScript 語法,而 Java 使用 Java 語法。用途:Node.js 適用於 I/O 密集型任務,而 Java 適用於大型企業應用程式。

Node.js 和 Java 在 Web 開發中各有優劣,因此選擇取決於專案需求。 Node.js 擅長即時應用程式、快速開發和微服務架構,而 Java 則在企業級支援、效能和安全性方面佔優。
