天天看點

EJS 中文文檔

譯者: 飛龍 來源: ejs

嵌入式 JavaScript 模闆

安裝

$ npm install ejs           

特性

  • <% %>

    用于控制流
  • <%= %>

    用于轉義的輸出
  • <%- %>

    用于非轉義的輸出
  • -%>

    結束标簽用于換行移除模式
  • 帶有

    <%_ _%>

    的控制流使用空白字元移除模式
  • 自定義分隔符 (例如,使用 ‘

示例

<% if (user) { %>
  <h2><%= user.name %></h2>
<% } %>           

用法

var template = ejs.compile(str, options);
template(data);
// => 渲染 HTML 字元串

ejs.render(str, data, options);
// => 渲染 HTML 字元串           

你也可以使用快捷方式

ejs.render(dataAndOptions);

,其中你可以通過一個對象來傳遞任何東西。在這種情況下,你需要以一個裝有所有需要傳遞對象的本地變量結束。

選項

  • cache

    編譯過的函數會被緩存,需要

    filename

  • filename

    cache

    用做緩存的鍵,用于包含
  • context

    函數執行的上下文
  • compileDebug

    如果為

    false

    ,不會編譯調試用的工具
  • client

    傳回獨立的編譯後的函數
  • delimiter

    開啟或者閉合尖括号所用的字元
  • debug

    輸出生成的函數體
  • _with

    是否使用

    with() {}

    結構。如果為

    false

    則局部資料會儲存在

    locals

    對象中。
  • rmWhitespace

    移除所有可以安全移除的空白字元,包含前導和尾後的空白字元。同時會為所有scriptlet标簽開啟

    -%>

    換行截斷的更加安全的模式。(它不會在一行之中去除标簽的換行)。

标簽

  • <%

    ‘Scriptlet’ 标簽, 用于控制流,沒有輸出
  • <%=

    向模闆輸出值(帶有轉義)
  • <%-

    向模闆輸出沒有轉義的值
  • <%#

    注釋标簽,不執行,也沒有輸出
  • <%%

    輸出字面的 ‘<%’
  • %>

    普通的結束标簽
  • -%>

    Trim-mode (‘newline slurp’) 标簽, 移除随後的換行符

包含

包含要麼是絕對路徑,或者如果不是的話,被視為相對于調用

include

的模闆的路徑(需要

filename

選項)。 例如,你在

./views/users.ejs

中包含

./views/user/show.ejs

,你應該使用

<%- include('user/show') %>

你可能會用到原始輸出标簽(

<%-

)避免二次轉義HTML輸出。

<ul>
  <% users.forEach(function(user){ %>
    <%- include('user/show', {user: user}) %>
  <% }); %>
</ul>           

包含的内容在運作時插入, 是以你可以在

include

調用中使用變量作為路徑(例如

<%- include(somePath) %>

)。在你頂級資料對象中的變量都可以用于所有的包含,而局部變量需要傳遞進來。

注意:仍然支援包含預處理指令(

<% include user/show %>

)。

自定義分隔符

自定義分隔符可以以模闆為機關應用,或者全局:

var ejs = require('ejs'),
    users = ['geddy', 'neil', 'alex'];

// Just one template
ejs.render('<?= users.join(" | "); ?>', {users: users}, {delimiter: '?'});
// => 'geddy | neil | alex'

// Or globally
ejs.delimiter = '$';
ejs.render('<$= users.join(" | "); $>', {users: users});
// => 'geddy | neil | alex'           

緩存

EJS 自帶了一個基本的運作時緩存,用于緩存渲染模闆的中介JavaScript函數。使用 Node 的

lru-cache

庫來添加LRU緩存十分簡單:

var ejs = require('ejs')
  , LRU = require('lru-cache');
ejs.cache = LRU(100); // LRU cache with 100-item limit           

如果你想清除ejs的緩存,調用

ejs.clearCache

。如果你需要以一個不同的限額來使用LRU,隻需要将

ejs.cache

重新設定為一個LRU的新執行個體。

布局

EJS 不會特别地支援區塊,但是可以采用包含頭部和尾部的方法來實作局部,像這樣:

<%- include('header') -%>
<h1>
  Title
</h1>
<p>
  My page
</p>
<%- include('footer') -%>           

用戶端支援

通路

最新釋出

,下載下傳

./ejs.js

或者

./ejs.min.js

選擇其一包含到你的頁面中,并且使用

ejs.render(str)

相關項目

EJS 有許多實作:

協定

Apache License, Version 2.0

繼續閱讀