简易模板字符串替换

function template(wrapParent,data){
  var wrapParent = getObj(wrapParent);
  var tplhtml = getAttr(wrapParent, "data-html");
  var tplstr = getObj(tplhtml).innerHTML;

  var re = /{{s*(w+)s*}}/g;


  if(data instanceof Array){
    var strtemp = '';
    for(var i=0; i<data.length; i++){
      strtemp += dataHtmlStr(data[i]);
    }
    wrapParent.innerHTML = strtemp;
  }else if({}.toString.call(data).split(" ")[1].toLowerCase().slice(0,-1)== 'object'){
    wrapParent.innerHTML = dataHtmlStr(data);
  }else{
    throw '数据格式不正确!';
  }

function dataHtmlStr(data){
  return (function(){
    return tplstr.replace(re,function(matchs,key){
      return data[key];
    })
  })();
}

  function getObj(id){
    return document.getElementById(id);
  }

   function getAttr(obj,attr){
     return obj.getAttribute(attr);
   }
}

调用:

var data = {
  name : 'zhl',
  age : 30,
  showbool : false
};

template('context',data);

原文地址:https://www.cnblogs.com/vsmart/p/6292928.html