Express之ejs模板

ejs是Embedded JavaScript的简写

1.创建一个ejs模板

var ejs = require(‘ejs‘);
var template = ‘<%= message %>‘;
var context = {message: ‘Hello template!‘};

console.log(ejs.render(template, context));

 通过ejs.render(template, data)就可以将数据传递给模板,从而渲染展示出页面
需要注意的是:data变量名是自定义的,但是不可以使用:cache,filename,scope,debug,compileDebug,client,open,close这些名称
这些名称是模板引擎设置相关的保留值

2.字符转义:ejs.render()传递数据时会将一些特定的字符进行转义,以防止脚本攻击

var ejs = require(‘ejs‘);
var template = ‘<%= message %>‘;
var context = {message: "<script>alert(‘XSS attack!‘);</script>"};

console.log(ejs.render(template, context));

打印结果

&lt;script&gt;alert(‘XSS attack!‘);&lt;/script&gt;

另:如果你确定传递的数据是可信的,则可以在模板标签中用<%-替代<%=,这样ejs就不会将特定的字符进行转义了

var ejs = require(‘ejs‘);
var template = ‘<%- message %>‘;
var context = {
    message: "<script>alert(‘Trusted JavaScript!‘);</script>"};
}

console.log(ejs.render(template, context));

这样alert的弹窗效果就出来了

3.自定义ejs模板的标签符号

var ejs = require(‘ejs‘);

ejs.open = ‘{{‘
ejs.close = ‘}}‘

var template = ‘{{= message }}‘;
var context = {message: ‘Hello template!‘};

console.log(ejs.render(template, context));






郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。