标签含义
-
<% %>
:'脚本' 标签,用于流程控制,无输出即直接使用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内容:
// 12.js内容: