1、定義了列表循環(huán)的標(biāo)記
{%for {stars} %}
<li>
<h4>姓名: {{item}}</h4>
</li>
{%endfor%}
2、正則匹配標(biāo)記
let reg = /\{\%for \{(.*?)\} \%\}(.*?)\{\%endfor\%\}/igs
匹配到兩個(gè)組
1、第一個(gè)組匹配出變量的key值
2、第二組匹配出需要生成的每一項(xiàng)的內(nèi)容
3、匹配替換每一項(xiàng)的內(nèi)容
while(result = reg.exec(data)){
let strKey = result[1].trim()
//通過(guò)key值獲取數(shù)組的內(nèi)容
let strValueArr = options[strKey]
let listStr = ""
strValueArr.forEach((item,i) => {
//替換每一項(xiàng)內(nèi)容里的變量
listStr = listStr + replaceVar(result[2],{"item":item})
});
data = data.replace(result[0],listStr)
}
4、通過(guò)eval函數(shù),將字符串表達(dá)式計(jì)算出來(lái)
let strValue = eval('options.'+strKey)