自定义模板引擎
js
function execute(keys, values, statement) {
const caller = new Function(...keys, `return (${statement})`);
return caller(...values);
}
function parse(source, data) {
const keys = Object.keys(data);
const values = [];
for (let i = 0; i < keys.length; i++) {
values.push(data[keys[i]]);
}
const regex = /{{([^}]*)}}/g;
source = source.replace(regex, (m, n) => {
let result = m;
try {
console.info(m, n);
result = execute(keys, values, n);
} catch (e) {}
return result;
});
console.info('source', source);
}
const source1 = `<div>
<p>{{hello + world}}</p>
<div>{{title}}</div>
<p>{{hello + world}}</p>
</div>`;
const data = {
title: 'face',
hello: 'hello',
world: 'world',
};
parse(source1, data);