EJS 模板語言使用
tmt-workflow 支援EJS 模式引擎,在編寫HTML 過程中可以節省下不少的工作量,並且透過 include
、for 循環
等特性減少程式碼行數,提高程式碼的可讀性。
我們採用EJS 2.0 以上版本:https://github.com/mde/ejs
EJS 特性
輸出
在頁面中輸出變數值,你可以這麼用: <div><%= var01 %></div>
#如果不希望變數值的內容被轉義,那就這麼用:<div><%- var02 %></div>
模組的邏輯支援
所有使用<% %> 括起來的內容都會被編譯成Javascript,你可以在模版檔中像寫js 一樣Coding,也允許你宣告變量,作用域就是目前模版,因為一個模版會被編譯成一個Javascript 函數。
範例:
<% var name = "littledu" %> <div> Hello, My Name is <%-name %> </div>
循環
就像寫Javascript 一樣
<ul> <% for(var i = 0; i < 10; i++) {%> <li>我是列表 <%-i %></li> <% } %> <ul>
Includes
Include 可以引用相對路徑的模版文件,例如有 html/index.html
和 html/_block/head.html
這兩個文件,你就可以在index. html 這麼用 <% include _block/head.html %>
。
範例
<ul> <% users.forEach(function(user){ %> <% include user/show %> <% }) %> </ul>
TmT EJS Helper
我們在 EJS 之外,提供了一些額外的模版函數來簡化我們的一些工作。
GIT:https://github.com/willerce/tmt-ejs-helper
css()
快速的引用CSS 文件,並附上註記線上CSS 絕對路徑,方便下游前端使用。
<head> <title>页面标题</title> <%- css("style-workflow.css") %> </head>
編譯後:
<head> <title>页面标题</title> <link rel="stylesheet" href="../../dev/css/style-workflow.css"/> <!--<link rel="stylesheet" href="http://wximg.gtimg.com/tmt/workflow/dist/css/style-workflow.css"/>--> </head>
js()
功能與css() 一致,不複述
img() 佔位圖
佔位圖,可以指定高、寬,以及className
<%- img(200, 400, 'block__img') %>
編譯後:
<img src="http://temp.im/200x400" class="block__img"/>
# text() 佔位文字
產生指定長度的佔位圖,第二個參數為偏移字數
例如,下面這個函數,產生的文字長度可能為7 ~ 13 位元。
<span><%- text(10, 3) %></span>
編譯後:
<span>一二三四五六七八九</span>