这里重点要理解下 %= 和 %- 的区别
= 是值计算 会获取变量的计算的值
- 是值替换 不会有任何改动原封不动的输出
用<%= %>,里面的变量一定是普通的数据格式内容,可以是字符串,可以是数组,可以对象。。
<%- %>里面的变量一定是字符串而且还是标签字符串,
如果不是变量而是一段HTML文件,那么就要考虑被转义的情况,要用<%- %>
- 使用<%- %> 会在处理其他数据结构带来问题,比如对象,数组等等
- 被转义的内容参与计算是可以反转义的,但是想直接签到html里显示,就不行了。
在js中使用通常是 var a = <%= code %>
取计算属性。
ejs模板文件中可以嵌入代码,但代码一定是写在<% %>中。下面归纳一些使用技巧。
使用某个变量的值要用<%= %>
<title><%= title %></title>
变量可以再计算
<title><%= title + ' page' %></title>
执行某段代码用<% %>
<% for(var i = 0; i < postsList.length; i++) { %>
<p><%= postsList[i] %></p>
<% } %>
总之,只需要在正常的代码前后加上<% 和 %>即可,如果是赋值语句还要加上=号。
其他参考资料
- 直接在<%%>中写表达式或变量。这种情况通常只是用来进行表达式计算或给变量赋值,不会有任何输出,被称作无缓冲的代码。
<% code %>
- 在<%%>中通过=号输出变量或表达式的值。默认输出到页面中的内容会进行HTML转义。如<div>Hello</div>输出后会变成<div>Hello</div>
<%= code %>
- 在<%%>中通过-号输出变量或表达式的值。内容不经任何转义直接输出到页面上。
<%- code %>
- 在结束标记%>之前添加-号,这样输出的内容会自动带有HTML标记的缩进。如:
<% code -%> 或 <% -%> 或 <%= code -%> 或 <%- code -%>