上面代码在模板字符串之中,放置了一个常规模板。该模板使用放置 JavaScript 代码,使用<%= ... %>
输出 JavaScript 表达式。
一种思路是将其转换为 JavaScript 表达式字符串。
echo('<ul>');
for(let i=0; i < data.supplies.length; i++) {
echo('<li>');
echo(data.supplies[i]);
echo('</li>');
};
echo('</ul>');
然后,将template
封装在一个函数里面返回,就可以了。
let script =
let output = "";
function echo(html){
output += html;
}
${ template }
})`;
return script;
compile
函数的用法如下。
let parse = eval(compile(template));
div.innerHTML = parse({ supplies: [ "broom", "mop", "cleaner" ] });
// <ul>
// <li>broom</li>
// <li>mop</li>
// </ul>