$ npm install ejs
<% if (user.email) { %>
<h1><%= user.email %></h1>
<% } %>
$ ejs hello.ejs -o hello.html
let ejs = require('ejs');
let people = ['geddy', 'neil', 'alex'];
let tpl = '<%= people.join(", "); %>';
let html = ejs.render(tpl, {
people: people
});
console.log(html);
å EJS ä¼ éæ¨¡æ¿å符串åä¸äºæ°æ®
<script src="ejs.js"></script>
<script>
let people = ['geddy', 'neil', 'alex'];
let html = ejs.render(
'<%= people.join(", "); %>',
{ people: people }
);
</script>
å¨èæ¬æ ç¾ä¸ä½¿ç¨ ejs
<%= var %> | æå°åéçå¼ |
<%- var %> | æå°æ¶ä¸è¿è¡ HTML è½¬ä¹ |
渲æå¹¶æå®è¾åºæä»¶
$ ejs hello.ejs -o hello.html
ä¸ºå ¶æä¾æ¨¡æ¿æä»¶åæ°æ®æä»¶
$ ejs hello.ejs -f data.json -o hello.html
<%# 该è¡å°è¡¨ç¤ºä¸æ¡æ³¨é %>
<%# è¿æ¯ä¸ä¸ªå¤è¡ EJS 注éã
å®å¯ä»¥è·¨è¶å¤è¡ï¼
ä½ä¸ä¼æ¾ç¤º
卿ç»ç HTML è¾åºä¸ã
%>
let ejs = require('ejs');
let template = ejs.compile(str, options);
template(data);
// => 渲æç HTML å符串
ejs.render(str, data, options);
// => 渲æç HTML å符串
ejs.renderFile(filename, data, options,
function(err, str){
// str => 渲æç HTML å符串
}
);
<%- include('partials/navbar.ejs') %>
å å«å¸¦ææ°æ®ç模æ¿ï¼
<% include('header', { title: 'My Page' }) %>
<ul>
<% users.forEach(function(user){ %>
<%- include('item', {user: user}); %>
<% }); %>
</ul>
è¦å 嫿¨¡æ¿ï¼éè¦æä»¶åé项ï¼è·¯å¾æ¯ç¸å¯¹ç
<% if (userLoggedIn) { %>
<p>Welcome, <%= username %>!</p>
<% } else { %>
<p>Please log in.</p>
<% } %>
<% if (userLoggedIn) { %>
<p>Welcome, <%= username %>!</p>
<% } else { %>
<p>Please log in.</p>
<% } %>
let ejs = require('ejs'),
users = ['geddy', 'neil', 'alex'];
// åªéä¸ä¸ªæ¨¡æ¿
ejs.render('<?= users.join(" | "); ?>',
{users: users},
{delimiter: '?'});
// => 'geddy | neil | alex'
// æå
¨å±èå´å
ejs.delimiter = '$';
ejs.render('<$= users.join(" | "); $>',
{users: users});
// => 'geddy | neil | alex'
let ejs = require('ejs'),
LRU = require('lru-cache');
// LRU ç¼åå
·æ 100 项éå¶
ejs.cache = LRU(100);
<%- include('header'); -%>
<h1> Title </h1>
<p>
My page
</p>
<%- include('footer'); -%>
let ejs = require('ejs');
let myFileLoader = function (filePath) {
return 'myFileLoader: ' + fs.readFileSync(filePath);
};
ejs.fileLoader = myFileLoader;
<div id="output"></div>
<script src="ejs.min.js"></script>
<script>
let people = ['geddy', 'neil', 'alex'],
html = ejs.render('<%= people.join(", "); %>', {people: people});
// With jQuery:
$('#output').html(html);
// Vanilla JS:
document.getElementById('output').innerHTML = html;
</script>
let str = "Hello <%= include('file', {person: 'John'}); %>",
fn = ejs.compile(str, {client: true});
fn(data, null, function(path, d){ // include callback
// path -> 'file'
// d -> {person: 'John'}
// Put your code here
// Return the contents of file as a string
}); // returns rendered string
| é项 | æè¿° |
|---|---|
cache | ç¼è¯åç彿°è¢«ç¼åï¼éè¦æä»¶å |
filename | ç±ç¼åç¨äºå ³é®ç¼åï¼å¹¶ç¨äºå å« |
root | 使ç¨ç»å¯¹è·¯å¾ï¼ä¾å¦ /file.ejsï¼è®¾ç½®å
å«é¡¹ç®çæ ¹ç®å½ã å¯ä»¥æ¯ä¸ä¸ªæ°ç»æ¥å°è¯è§£ææ¥èªå¤ä¸ªç®å½çå
å«ã |
views | è§£æå å«ç¸å¯¹è·¯å¾æ¶è¦ä½¿ç¨çè·¯å¾æ°ç»ã |
context | 彿°æ§è¡ä¸ä¸æ |
compileDebug | å½ false æ¶ï¼ä¸ç¼è¯ä»»ä½è°è¯å·¥å
· |
client | è¿åç¬ç«ç¼è¯ç彿° |
delimiter | ç¨äºå
é¨åé符çå符ï¼é»è®¤ä¸º % |
openDelimiter | ç¨äºæå¼åé符çå符ï¼é»è®¤ä¸º < |
closeDelimiter | ç¨äºç»æåé符çå符ï¼é»è®¤ä¸º > |
debug | è¾åºçæç彿°ä½ |
strict | å½è®¾ç½®ä¸º true æ¶ï¼çæç彿°å¤äºä¸¥æ ¼æ¨¡å¼ |
_with | æ¯å¦ä½¿ç¨ with() {} æé ã å¦æä¸º falseï¼åå±é¨åéå°åå¨å¨å±é¨åé对象ä¸ã ï¼æç¤º--strictï¼ |
localsName | ä¸ä½¿ç¨æ¶ç¨äºåå¨å±é¨åéç对象çåç§° é»è®¤ä¸ºå±é¨åé |
rmWhitespace | å 餿æå¯å®å
¨å é¤çç©ºæ ¼ï¼å
æ¬å导åå°¾éç©ºæ ¼ã å®è¿ä¸ºææ scriptlet æ è®°å¯ç¨äºæ´å®å
¨çæ¬ç -%> è¡å¸æ¶ï¼å®ä¸ä¼å¨è¡ä¸é´å»é¤æ°çæ è®°è¡ï¼ |
escape | ä¸ <%= æé ä¸èµ·ä½¿ç¨ç转ä¹å½æ°ã å®ç¨äºæ¸²æï¼å¹¶å¨çæå®¢æ·ç«¯å½æ°æ¶è¿è¡ .toString() å¤çã ï¼é»è®¤æ
åµä¸è½¬ä¹ XMLï¼ |
outputFunctionName | 设置为å符串ï¼ä¾å¦ echo æ printï¼ï¼ä»¥ä¾¿å½æ°å¨ scriptlet æ ç¾å
æå°è¾åº |
async | å½ true æ¶ï¼EJS å°ä½¿ç¨å¼æ¥å½æ°è¿è¡æ¸²æã ï¼åå³äº JS è¿è¡æ¶ä¸ç async/await æ¯æ |
| æ ç¾ | æè¿° |
|---|---|
<% | 'Scriptlet' æ ç¾ï¼ç¨äºæ§å¶æµï¼æ è¾åº |
<%_ | âWhitespace SlurpingâScriptlet æ ç¾ï¼å é¤å ¶åé¢çææç©ºæ ¼ |
<%= | å°å¼è¾åºå°æ¨¡æ¿ä¸ï¼HTML 转ä¹ï¼ |
<%- | å°æªè½¬ä¹çå¼è¾åºå°æ¨¡æ¿ä¸ |
<%# | æ³¨éæ ç¾ï¼ä¸æ§è¡ï¼ä¸è¾åº |
<%% | è¾åºæå <% |
%> | æ®éç»ææ ç¾ |
-%> | ä¿®åªæ¨¡å¼ï¼'newline slurp'ï¼æ ç¾ï¼ä¿®åªæ¢è¡ç¬¦åçå 容 |
_%> | âWhitespace Slurpingâç»ææ ç¾ï¼å é¤å ¶åçææç©ºæ ¼ |
| é项 | æè¿° |
|---|---|
cache | ç¼è¯åç彿°è¢«ç¼åï¼éè¦æä»¶å |
-o / --output-file FILE | å°æ¸²æçè¾åºåå ¥ FILE è䏿¯ stdoutã |
-f / --data-file FILE | å¿ é¡»æ¯ JSON æ ¼å¼ã ä½¿ç¨æ¥èª FILE çè§£æè¾å ¥ä½ä¸ºæ¸²ææ°æ®ã |
-i / --data-input STRING | å¿ é¡»éç¨ JSON æ ¼å¼å URI ç¼ç ã ä½¿ç¨æ¥èª STRING çè§£æè¾å ¥ä½ä¸ºæ¸²ææ°æ®ã |
-m / --delimiter CHARACTER | 使ç¨å¸¦æå°æ¬å·ç CHARACTER æ¥è¡¨ç¤ºæå¼/å ³éï¼é»è®¤ä¸º %ï¼ã |
-p / --open-delimiter CHARACTER | ä½¿ç¨ CHARACTER è䏿¯å·¦å°æ¬å·æ¥æå¼ã |
-c / --close-delimiter CHARACTER | ä½¿ç¨ CHARACTER è䏿¯å³å°æ¬å·æ¥ç»æã |
-s / --strict | å½è®¾ç½®ä¸º true æ¶ï¼çæç彿°å¤äºä¸¥æ ¼æ¨¡å¼ |
-n / --no-with | 对åéä½¿ç¨ locals 对象ï¼è䏿¯ä½¿ç¨ withï¼éå«--strictï¼ã |
-l / --locals-name | ä¸ä½¿ç¨âwithâæ¶ç¨äºåå¨å±é¨åéç对象çåç§°ã |
-w / --rm-whitespace | å 餿æå¯å®å ¨å é¤çç©ºæ ¼ï¼å æ¬å导åå°¾éç©ºæ ¼ã |
-d / --debug | è¾åºçæç彿°ä½ |
-h / --help | æ¾ç¤ºæ¤å¸®å©æ¶æ¯ã |
-V/v / --version | æ¾ç¤º EJS çæ¬ã |
使ç¨ç¤ºä¾ï¼
$ ejs -p [ -c ] ./template_file.ejs -o ./output.html
$ ejs ./test/fixtures/user.ejs name=Lerxst
$ ejs -n -l _ ./some_template.ejs -f ./data_file.json