javascript
EJS学习(二)之语法规则上
標簽含義
-
<% %>?:'腳本' 標簽,用于流程控制,無輸出即直接使用JavaScript語言。
-
<%= %>:轉義輸出數據到模板(輸出是轉義 HTML 標簽)即在后端定義的變量,可以再前端顯示輸出
-
<%- %>:非轉義輸出數據到模板
-
<%# %>:注釋標簽,不執行、不輸出內容
-
<%% %>:?輸出字符串 '<%'
-
%>:?一般結束標簽
-
-%>?:刪除緊隨其后的換行符
-
<%_?刪除其前面的空格符
-
_%>?將結束標簽后面的空格符刪除
?? 空格不是必須的
用法
var template = ejs.compile(str, options); template(data); // => 輸出繪制后的 HTML 字符串 ejs.render(str, data, options); // => 輸出繪制后的 HTML 字符串 ejs.renderFile(filename, data, options, function(err, str){// str => 輸出繪制后的 HTML 字符串 });options參數
-
cache?是否緩存解析后的模版,需要filename作為key;
-
filename?模版文件名被?cache?參數用做鍵值,同時也用于 include 語句
-
context?函數執行時的上下文環境
-
compileDebug?標識是否是編譯debug,為true則會生成解析過程中的跟蹤信息,用于調試;當為?false?時不編譯調試語句
-
client?標識是否用于瀏覽器客戶端運行,為true則返回解析后的可以單獨運行的Function函數
-
open 代碼開頭標記,默認為'<%';
-
close 代碼結束標記,默認為'%>';
-
delimiter?放在角括號中的字符,用于標記標簽的開與閉,也就是自定義模版標簽
-
debug?標識是否是debeg狀態,debug為true則會輸出生成的Function內容
-
_with?是否使用?with() {}?結構。如果為?false,所有局部數據將存儲在?locals?對象上。
-
localsName?如果不使用?with?,localsName 將作為存儲局部變量的對象的名稱。默認名稱是?locals
-
rmWhitespace?刪除所有可安全刪除的空白字符,包括開始與結尾處的空格。對于所有標簽來說,它提供了一個更安全版本的?-%>?(在一行的中間并不會剔除標簽后面的換行符)。
-
escape?為?<%=?結構設置對應的轉義(escape)函數。它被用于輸出結果以及在生成的客戶端函數中通過?.toString()?輸出。(默認轉義 XML)。
自定義分隔符
可針對單個模板或全局使用自定義分隔符:
情況一:使用ejs.render()
var 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'情況二:使用ejs.renderFiler()
// 單個模板文件 // 11.ejs內容: <? for(var i=0; i<num; i++ ) { -?><h2><?= user.name ?></h2><h2><?= user.age ?></h2> <? } -?>// 11.js內容: var ejs = require('ejs');ejs.renderFile('./work/lesson14/view/11.ejs',{user:{name:"wangkun",age:22,},num:2 },{rmWhitespace:true,delimiter: '?'},(err,data)=>{if(err) {console.error(err);}else {console.log(data);} });// 輸出: <body> <h2>wangkun</h2> <h2>22</h2> <h2>wangkun</h2> <h2>22</h2> </body>// 全局
// 12.ejs內容:
<$ for(var i=0; i<num; i++ ) { -$> <h2><$= user.name $></h2> <h2><$= user.age $></h2> <$ } -$> // 12.js內容:
const ejs = require('ejs');
ejs.delimiter = '$';
ejs.renderFile('./work/lesson14/view/12.ejs',{ user:{ name:"wangkun", age:22, }, num:2 },{rmWhitespace:true},(err,data)=>{ if(err) { console.error(err); }else { console.log(data); } }); ? // 輸出: <h2>wangkun</h2> <h2>22</h2> <h2>wangkun</h2> <h2>22</h2> ?
?
轉載于:https://www.cnblogs.com/kunmomo/p/11465612.html
總結
以上是生活随笔為你收集整理的EJS学习(二)之语法规则上的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EJS学习(一)之特性、安装、工作原理
- 下一篇: EJS学习(三)之语法规则中