mustache 语法探析

1: mutache 语法解析:

// 但是在ES6 之前没有反引号, 但 但是有神人存在把模板抽离出来
// 写在<script> 标签中
// 模板区域
{{# arr}} 和 {{/arr}}  一定要有开始和结束标签
<sctipt type="text/ template" id="mytemplate">
    <ul>
       {{#arr}}
         <li>
           <div class="hd">{{name}}</div>
           <div class="bd"></div>
             <p>姓名: {{name}} </p>
             <p>年龄:{{age}} </p>
             <p>性别:{{sex}} </p>
           </div>
          </li>
       {{/arr}}
     </ul>
</script>
<script src="./jslib/mustache.js"> </script>

<script>
  var templateStr = document.getElementById('mytemplate').innerHTML;
  var data = {
    arr: [
      {"name": "小明", "age": 12, "sex": "男"},
      {"name": "小红", "age": 11, "sex": "女"},
      {"name": "小强", "age": 13, "sex": "男"},
   ]
  }

 var domStr = Mustache.render(templateStr, data);
 var conrtainer = document.getElementById('container');
 container.innerHTML =domStr;
</script>

2: mustache 库:的底层核心机理:  mustache 库不能简单使用正则表达式的实现思路。

在较为简单的情况下, 可以使用正则表达式实现,  简单的模板字符串, 但是在复杂的情况下,正则表达式的情况就不可以了。

mustache: 库设计思想, 底层设计风格都被vue 所借鉴。 

<script>
  // 正则表达式的机理就是replace 方法
  var templateStr = '<h1>我买了一个{{thing}}, 好{{mood}}</h1>';

  var data = {   // 数据源
    thing: '华为手机',
    mood: '开心'
  }

  // 最简单模板引擎的实现机理,  就是利用正则表达式中的replace 方法。
  // replace() 方法第二个参数可以是一个函数,  这个函数提供捕获东西的参数,  就是$1
  // 结合data对象,  可以进行智能替换

  使用正则表达式, 只会替换一个,  并不会全局替换。 必须加上 // 全局匹配。
  replace 方法:  第一个参数使用正则表达式,  第二个参数可以是一个函数
  mustache 底层不是使用正则表达式实现。
  -----------------------------------------------------------------------
  实例:
   a: 参数寻找到的部分
   b: 擦拭就是捕获到的部分
   c: 参数 出现的位置 (下标);
   d: 参数 就是 出现完整的字符串
   templateStr.replace(/\{\{(\w+)\}\}/g, function(a, b, c d) {
     consoler.log(a, b, c, d)
   }
  ------------------------------------------------------------------------
  function render(templateStr, data) {
     return templateStr.replace(/\{\{(\w+)\}\}/g, function(findaStr, $1) {
      return data[$1];
    })
  }

  var result = render(templateStr, data);
  console.log(result)
</script>

最简单的模板引擎实现机理:  利用的是正则表达式中replace()  方法;

replace()  第二个参数可以是一个函数, 这个函数提供捕获东西参数,就是 $1

结合data 对象,进行只能替换操作。

mustache 库机理: 模板字符串  ===>(编译) tokens  ===> 数据 (结合) + 解析  ===> Dom字符串

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值