譯者:飛龍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
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 有許多實現:
TJ 的實現,這個庫的 v1 版本:https://github.com/tj/ejs
Jupiter Consulting 的 EJS: http://www.embeddedjs.com/
Google Code 上的 EJS 嵌入式 JavaScript 框架:https://code.google.com/p/embeddedjavascript/
Sam Stephenson 的 Ruby 實現:https://rubygems.org/gems/ejs
Erubis,ERB 實現,也能夠運行JavaScript:http://www.kuwata-lab.com/erubis/users-guide.04.html#lang-javascript