var data = { school: '启蒙艾思', cls: { cname: 'qimengs.com' }, arr: ['tool', 'h5', 'mapp'] } var template = `<div><%if(school){%><p><%=school%> </p><%}%><%for (var i = 0; i < arr.length; i++) {%><span><%=arr[i]%></span><%}%> </div> <div> <%=school%> : <%=cls.cname%> </div>`; function tpl(str, data) { var fbody = `var p = []; with(data){${pHTML(str)}};return p.join('')`; return new Function('data', fbody)(data); } function pHTML(str) { str = 'p.push("' + str + '")'; return str.replace(/[ ]*/g, '') .replace(/<%=(.*?)%>/g, '<%p.push($1);%>') .replace(/<%/g, '");') .replace(/%>/g, 'p.push("') } console.log(tpl(template, data));