mixin 的用途是用在當某一段程式重複性高的時候,可以將它抽出來做 mixins,作為重複使用的區塊,mixin 可以將她當作 javascript 的 function 的概念
寫法
1 2
mixin 方法名稱(參數) 呈現資料
下圖的範例,我們將ul li 的 li 部分做 mixin,在第一行的地方,我們假定 li 裡面的內容要擺放 name = > price ,這就代表需要將參數放到方法的括弧裡面,因此,就如果有參數的話,就在方法名稱括號內,並以逗號分隔的方式擺參數,最後在 li 的地方就將參數值以 #{參數名} 帶入。在第五、第六行得地方呼叫的方式就用 + 號,後面接方法名稱,就像 js 呼叫的方式相同,寫為 +book(“name”, “price”)
case 條件式判斷
case 是一種類似 if else 的判斷方式,從下圖的語法來看,一開始建立一個變數為 book ,然後使用 case 後面再接變數,再第二行取到變數值之後,程式就會開始與 when 所設定的字串做比對,如果有符合,那麼就進行以下的陳述句,如果都沒有符合,那麼就會跑預設值 default,然而 default 可以不一定需要,這點可以省去
<div class="wrap"> <h1>Lorem Ipsum</h1> <p>Contrary to popular belief, Lorem Ipsum is not simply random text. </p> <a href=“http://www.google.com">Google</a> </div>
===== Jade =====
1 2 3 4
.wrap h1 Lorem Ipsum p Contrary to popular belief, Lorem Ipsum is not simply random text. a(href='http://www.google.com') Google
Jade 特點
Jade 用縮排來定義 HTML 的階層結構
Jade 比 HTML 寫起來更簡潔
Jade 在編譯後,會將 HTML 的補上結束標籤
Jade 不需要寫小於大於的符號
Jade 語法
因為 Jade 是利用縮排的方式來定義 HTML 的階層結構,也就是說,下一行的縮排的話,就是上一行的子節點。
撰寫
1
html
編譯後
1
<html></html>
撰寫
1
div#wrap
編譯後
1
<div id="wrap"></div>
撰寫
1
p.article.a1.a2.a3
編譯後
1
<p class="article a1 a2 a3"></p>
撰寫
1 2
p span
編譯後
1
<p><span></span></p>
撰寫
1 2 3 4
p | Contrary to popular belief | Lorem Ipsum is simply dummy text of the printing | It has survived not only five centuries
編譯後
1
<p>Contrary to popular belief Lorem Ipsum is simply dummy text of the printing It has survived not only five centuries </p>
標籤屬性:屬性部分就用括號的方式括弧起來,有多個屬性時就用逗點分隔或者段行來分隔
方法一
1
input(type="text", placeholder="hello")
方法二
1 2 3 4 5
input( type='text' name='age' placeholder='typing your age' )
//檢查是否為會員 User.getUserNumByName = function getUserNumByName(username, callback) { //使用username 來檢查是否有資料 var cmd = “select COUNT(1) AS num from user info where username = ?"; connection.query(cmd, [username], function (err, result) { if (err) { return; } connection.release(); //查詢結果使用 callback 呼叫,並將 err, result 參數帶入 callback(err,result); }); }; //透過帳號取得使用者資料 User.getUserByUserName = function getUserNumByName(username, callback) { var cmd = “select * from userinfo where username = ?"; connection.query(cmd, [username], function (err, result) { if (err) { return; } connection.release(); callback(err,result); }); };
<script type="text/javascript"> $(function(){ var socket = io.connect(); var $frmMessage = $('#send-message'); var $frmNick = $('#setNick'); var $nickError = $('#nickError'); var $nickBox = $('#txtNickname'); var $boxMessage = $('#message'); var $chat = $('#chat');
socket.on('usernames', function(data){ var sb = ''; for(var d = 0; d < data.length; d++ ) { console.log(data[d]); sb += data[d] + "<br />"; } $('div#users').html(sb);
});
socket.on('chat', function(server,msg){
var now = new Date(); var datetime = now.getFullYear()+'/'+(now.getMonth()+1)+'/'+now.getDate(); datetime += ' '+now.getHours()+':'+now.getMinutes()+':'+now.getSeconds();
socket.on('new message', function(data){ var msg = data.msg; var name = data.nick;
var now = new Date(); var datetime = now.getFullYear()+'/'+(now.getMonth()+1)+'/'+now.getDate(); datetime += ' '+now.getHours()+':'+now.getMinutes()+':'+now.getSeconds();