EJS 中文文檔

譯者:飛龍javascript

來源:ejshtml

嵌入式 JavaScript 模板java

安裝

$ npm install ejs

特性

  • <% %> 用於控制流git

  • <%= %> 用於轉義的輸出github

  • <%- %> 用於非轉義的輸出express

  • -%> 結束標籤用於換行移除模式apache

  • 帶有<%_ _%>的控制流使用空白字符移除模式npm

  • 自定義分隔符 (例如,使用 '<? ?>' 代替 '<% %>')緩存

  • 包含安全

  • 客戶端支持

  • 中介JavaScript的靜態緩存

  • 模板的靜態緩存

  • Express 視圖系統兼容

示例

<% 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

  • filenamecache用作緩存的鍵,用於包含

  • 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

相關文章
相關標籤/搜索