jade雖然簡潔受很多大神推崇并且也是官方推薦, 但我個人覺得可讀性太差了, 個人傾向樸實的EJS,這里兩者都進行學習,至于Handlebars,Swig如果公司要用再學習吧
EJS
EJS幾乎不要學習成本, 舉兩個例子差不多就能用了,如下
<% if (user) { %>
<h2><%= user.name %></h2>
<% } %>
<ul>
<% for(var i=0; i<supplies.length; i++) { %>
<li>
<a href='supplies/<%= supplies[i] %>'>
<%= supplies[i] %>
</a>
</li>
<% } %>
</ul>
注意 :
<% Scriptlet' 標簽, 用于控制流,沒有輸出
<%= 向模板輸出值(帶有轉(zhuǎn)義)
<%- 向模板輸出沒有轉(zhuǎn)義的值
<%# 注釋標簽,不執(zhí)行,也沒有輸出
<%% 輸出字面的 '<%'
%> 普通的結(jié)束標簽
-%> Trim-mode ('newline slurp') 標簽, 移除隨后的換行符
在Express中設置模板引擎
app.set('views', './views'); // 指定模板文件存放位置
app.set('view engine', 'jade') // 設置默認的模板引擎
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.engine( 'ejs', require('ejs')._express )
注意: _express函數(shù)是許多模板引擎提供的回調(diào)函數(shù)。但是這個函數(shù)只能在默認的文件擴展名上工作。但是,有種情況我們使用的不是對應模板引擎的擴展名的怎么辦呢?這時不能再調(diào)用_express函數(shù)。在這種情況下我們可以使用一個替代的函數(shù),例如: 在EJS中提供了renderFile函數(shù)來完成相同的功能。
app.engine( '.html', require('ejs').renderFile ); // 注冊html模板引擎
app.set('view engine', 'html'); // 將模板引擎換成html
app.engine('.html',ejs.__express)
app.set('view engine','html)