EJS
用法:
js
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 字符串
});
|-- ejs-test
|-- index.js
|-- views
|-- index.ejs
1 常用标签说明
1.1 <%#
注释标签,不执行、不输出内容
index.ejs
ejs
<body>
<%# 这是段注释 %>
</body>
1.2 <%
'脚本' 标签,用于流程控制,无输出
js
import ejs from 'ejs'
ejs.renderFile('./views/index.ejs', {
flag: true
}, (err, data) => {
if (err) console.log(err)
console.log(data)
})
index.ejs
ejs
<body>
<% if (flag) { %>
hello
<% } %>
</body>
Preview
1.3 <%%
、%%>
<%%
输出字符串 '<%',%%>
输出字符串 '%>'。若想输出 <%
,如果直接在模板中写 <%
,执行 node index.js
会报错,原因是解析模板时,ejs 把 <%
当中一个开始标签,但是没有找到对应的结束标签,所以报错
错误的方式:
index.ejs
ejs
<body>
<%
</body>
正确的方式:
index.ejs
ejs
<body>
<%%
</body>
1.4 <%=
、<%-
有些字符(如 <
、>
)在模板中有特殊的含义,如果 data 中的属性值包含这些特殊字符,<%=
、<%-
对它们的处理是不一样的
<%=
会对特殊字符进行转义,如在解析后的结果中<
变成了>
<%-
输出非转义的数据到模板,如在解析后的结果中<
还是<
index.js
js
import ejs from 'ejs'
ejs.renderFile('./views/index.ejs', {
message: '<'
}, (err, data) => {
if (err) console.log(err)
console.log(data)
})
index.ejs
ejs
<body>
<%= message %>
<%- message %>
</body>
Preview
1.5 -%>
、_%>
模板一般写在后缀为 ejs
的文件中,默认情况下模板中的空格、换行会被原样输出
-%>
将结束标签后面的空格符删除_%>
删除紧随其后的换行符
index.js
js
import ejs from 'ejs'
ejs.renderFile('./views/index.ejs', {
message: 'hello'
}, (err, data) => {
if (err) console.log(err)
console.log(data)
})
index.ejs
ejs
<body>
<%= message %> <%= message %>
<%= message -%> <%= message %>
</body>
Preview
index.ejs
ejs
<body>
<%= message %>
<%= message %>
<%= message _%>
<%= message %>
</body>
Preview
备注:打印结果中最后一个 hello
前存在空格的原因是模板中最后的 <%= message %>
前不仅有换行,还有空格,-%>
只是去掉了换行,空格会被保留