正则实现
let templateStr = 'i am {{name}},age {{age}},job {{job}} ';
let data = {
name:'xbd',
age:18,
job:'CTO'
}
function templateFunc(str,data){
let result = str.replace(/\{\{(\w+)\}\}/g,function(match,key){
return data[key]
})
return result
}
利用ES 6 模板字符串实现
/**
* tplv render
* @param template
* @param data
*/
export default function(template: string, data: object): string {
const ks = Object.keys(data);
const vs = ks.map((k: any) => data[k]);
const t = `return \`${template}\``;
const f = new Function(...ks, t);
return f(...vs);
}