模板引擎Template的简单实现

模板引擎Template

模板引擎实现基本原理

首先体验一下 进行简单实现
// 目标  将字符串里的带有<%= %>标识符的替换成对应的数据 
var str = '大家好!我是<%= name %>, 今年<%= age %>岁';

// 要替的数据格式  必须和标识符里面的对应起来
var data = {
    "name":"haha",
    "age":22
};
// <%= name %> 
// 简单正则表达式  用于匹配标识符
var reg = /<%=\s*(\w+)\s*%>/;

// exec用于检索字符串中的正则表达式的匹配
// exec返回一个数组  其中存放匹配的结果  如果未找到匹配  则返回值为 null
var arrReg = reg.exec(str);

console.log(arrReg);  // ["<%= name %>", "name", index: 6, input: "大家好!我是<%= name %> 今年<%= age %>岁"]

// 替换字符串的标识符所对应的数据 每次只匹配一个标识符 
// 替换数据  arrReg[0] == <%= name %>  arrReg[1] == "name"
str = str.replace(arrReg[0],data[arrReg[1]]);
console.log(str);  // 大家好!我是haha 今年<%= age %>岁

接下来直接封装为函数

1、封装模板引擎函数起来
// 封装一个模板引擎函数  传入模板id和数据
function template(temId,data){

// 获取模板字符串
var str = document.getElementById(temId).innerHTML;

// 正则表达式  标记<%= name %> 这里的变量命名规则只能是字母或数字不能有特殊字符
var reg = /<%=\s*(\w+)\s*%>/;

// exec用于检索字符串中的正则表达式的匹配
// exec返回一个数组  其中存放匹配的结果  如果未找到匹配  则返回值为 null
var arrReg = '';
while(arrReg = reg.exec(str)){

    // 匹配项替换
    str = str.replace(arrReg[0],data[arrReg[1]]);
}

// 返回替换数据后的模板字符串
return str;
}
2、调用模板引擎
 var data = {
    "name":"haha",
    "age":22
};
// 调用模板引擎
var html = template('tem',data);  // 这里返回的是模板字符串直接插入到对应的标签内即可
document.body.innerHTML = html;  // 插入到了body里
3、模板引擎
//模板引擎  template 为自定义

转载于:https://www.cnblogs.com/PaddyWang/p/5273375.html

你可能感兴趣的:(模板引擎Template的简单实现)