第一版renderTemplate
现在我们已经通过编译生成了tokens数组
1 | export default function renderTemplate(tokens, data) { |
先不处理#
类型的token,我们看name
类型的数据,如果存在a.b.c
有逗号的形式,那么data[token[1]]
就会变成data[a.b.c]
就会产生错误,所以我们这里通过一个函数来处理这种形式
lookup函数
功能是可以在dataObj对象中,寻找用连续点符号的keyName属性
例如:dataObj是
1 | { |
那么lookup(dataObj, 'a.b.c')
结果就是100
1 | export default function lookup(dataObj, keyName) { |
第二版renderTemplate
1 | import lookup from './lookup'; |
现在我们需要处理#
类型的token了
parseArray
处理数组,结合renderTemplate实现递归
注意:这个函数接收的参数是token,而不是tokens
token就是一个简单的['#', 'students', []]
1 | import lookup from './lookup'; |
第三版renderTemplate
1 | import lookup from "./lookup"; |
现在我们已经生成dom字符串,只需要直接挂载到DOM节点上就能展示出来了