您的位置:首页 > Web前端 > HTML

ES6模板字符串编译示例

2017-10-30 10:31 381 查看
<div id="div"></div>
let template = `
<ul>
<% for(let i=0; i < data.supplies.length; i++) { %>
<li><%= data.supplies[i] %></li>
<% } %>
</ul>
`;
function compile(template){
const evalExpr = /<%=(.+?)%>/g;
const expr = /<%([\s\S]+?)%>/g;

template = template
.replace(evalExpr, '`); \n echo( $1 ); \n echo(`')
.replace(expr, '`); \n $1 \n echo(`');

template = 'echo(`' + template + '`);';

let script =
`(function parse(data){
let output = "";

function echo(html){
output += html;
}

${ template }

return output;
})`;

return script;
}
let parse = eval(compile(template));
document.getElementById('div').innerHTML = parse({ supplies: [ "broom", "mop", "cleaner" ] });
<ul>
<li>broom</li>
<li>mop</li>
<li>cleaner</li>
</ul>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息