模板引擎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 为自定义
<script type="text/template" id="tem">
    <div>这是一个div<%= name %></div>
    <p>这是一个p<%= age %></p>
</script>

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值