EJS 模板語言使用


tmt-workflow 支援EJS 模式引擎,在編寫HTML 過程中可以節省下不少的工作量,並且透過 includefor 循環 等特性減少程式碼行數,提高程式碼的可讀性。

我們採用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>

更多的模版函數?等你來提~