模板引擎实现

# 模板引擎实现

let template = '我是{{name}},年龄{{age}},性别{{sex}}';
let data = {
  name: '姓名',
  age: 18
}
render(template, data); // 我是姓名,年龄18,性别undefined

1
2
3
4
5
6
7
const render = (template, data) => {
    // 模板字符串正则
    const reg = /\{\{(\w+)\}\}/;

    // 如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。

    // 判断模板里是否有模板字符串
    if (reg.test(template)) {
        // 注意上面的正则检索不是全局的(没有g),查找当前模板里第一个模板字符串的字段

        const name = reg.exec(template)[1];
        // 将第一个模板字符串渲染
        template = template.replace(reg, data[name]);

        // 递归的渲染并返回渲染后的结构
        return render(template, data);
    }
    return template; // 如果模板没有模板字符串直接返回
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
上次更新: 2022/7/29 上午11:39:16