txt = txt.replace(rk, function(_, g) {
//replace使用正则匹配一次函数就会被调用一次
//函数第0个参数表示匹配到的内容,函数的第n个参数表示第n组
// console.log(g);
let key = g.trim(); //有可能两边有东西
let value = data[key];
//将{{ xxx }} 用value替换
return value;
});
这一步说白了就是用正则判断原来{{这里面的值}} 拿这个值赋给data[key值],如果data里有就在页面上
key:value 键值对 let it,但是这个方法是初步,未改良的,有很多欠考虑的地方,下一步我们会给它们做一些优化
- 这是一步不正确的因为我们直接操作模板并没有用新模板替换模板
- Vue 使用虚拟DOM 我们这个这个是真实DOM
- 只考虑的{{name}}单属性{{child.name.firname}} 没有办法处理
- 代码整合并未做
let generateNode = tmpNode.cloneNode(true); //克隆模板
compiler(generateNode, data);
app.parentNode.replaceChild(generateNode, app); //替换子元素,用新的替换旧的
网友评论