手写一个模板引擎

2017-07-07  本文已影响69人  放风筝的小小马

自己实现stringFormat函数

stringFormat函数的使用示例:
var eleDiv = stringFormat('<div class="{0}">{1}</div>', 'ele', '我是一个div');
执行上面的代码后,eleDiv就变成了:
<div class="ele">我是一个div</div>
也就是说通过stringFormat可以对字符串进行格式化输出

自己实现的思路

代码如下:

function stringFormat(string) {
  var data = [].slice.call(arguments, 1);
  var regex = /{(\d+)}/g;
  string = string.replace(regex, function(){
    // 如果不知道输入的arguments参数是什么,可以打印出来
    // console.log(arguments)
    var index = arguments[1]; // arguments[1]获取到的是正则中分组的值
    return data[index];
  });
  return string;
}
stringFormat('hi, {0}, {1}', 1,2,3,4,5,6)

自己实现模板引擎第一版

变量使用<%...%>表示

var Temperate = function (string, data){
  var regex = /<%([^%]+)?%>/g;
  var match ;
  while(match = regex.exec(string)) {
    string = string.replace(match[0], data[match[1]]);
  }
  return string;
}
var data = {
  word: "hahaha",
  woooorld: '1234'
};

var str = Temperate('hello <%word%> hhah <%woooorld%>', data)
console.log(str);

实现了上面的代码后,可以查看这篇文章进行深入了解——只有20行Javascript代码!手把手教你写一个页面模板引擎

上一篇 下一篇

猜你喜欢

热点阅读