美文网首页
Mustache胡子模板学习心得[盖楼中]

Mustache胡子模板学习心得[盖楼中]

作者: 战神飘雪 | 来源:发表于2017-10-27 00:55 被阅读38次

需要下载Mustache.js的快速通道:
https://github.com/janl/mustache.js
里面还有demo可以学习,
不过是英文文档,
英语不好的还是看我的吧

直接上代码了

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <script src="js/mustache.js" type="text/javascript" charset="utf-8"></script>
        <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
    </head>

    <body>
        <div class="alldiv1"></div>
        <hr />
        <div class="alldiv2"></div>
        <hr />
        <div class="alldiv3"></div>
        <hr />
        <div class="alldiv4"></div>
        <hr />
        <div class="alldiv5"></div>
        <hr />
        <div class="alldiv6"></div>
        <hr />
        <div class="alldiv7"></div>
        <hr />
        <div class="alldiv8"></div>
        <hr />
        <div class="alldiv9"></div>
        
        <script type="text/javascript">
            
            //Mustache.render(template,data);
            
            
                            //{{prop}}常规输出
                            var data = {a1:"我",a2:"爱",a3:"悦悦"};
                            var template = "<p>{{a1}}</p><p>{{a2}}</p><p>{{a3}}</p>";
                            var view = Mustache.render(template,data); 
                            $(".alldiv1").html(view);
                            
                            //{{#prop}}内容{{/prop}} if else判断
                            var data = {prop:function(){
                                return true;
                            }};
                            var template = "<p>{{#prop}}我爱悦悦{{/prop}}</p>";
                            var view = Mustache.render(template,data); 
                            $(".alldiv2").html(view);
                            
                            //{{#prop}}{{name}}{{/prop}}for each循环,基础版
                            //json数组对象写法;
                            var data = {talk:[{"tel":"我"},{"tel":"爱"},{"tel":"你"},{"tel":"悦悦"}]};
                            var template = "<p>{{#talk}}<h1>{{tel}}</h1>{{/talk}}</p>";
                            var view = Mustache.render(template,data); 
                            $(".alldiv3").html(view);
                            
                            //{{#prop}}{{name}}{{/prop}}函数返回值数组写法
                            //函数返回值数组写法,基础版
//                          var data ={talk:function(){
//                              return [{"tel":"我"},{"tel":"爱"},{"tel":"你"},{"tel":"悦悦"}];
//                          }};
                            //或者更形象一点的例子,进阶版
                            var data ={talk:[
                                {"tel":"我","pt":"I"},
                                {"tel":"爱","pt":"LOVE"},
                                {"tel":"你","pt":"YOU"},
                                {"tel":"悦悦","pt":"yueyue"}
                                ],
                            mushroom:function(){
                                var self = this;
                                return self.tel +"["+ self.pt+"]";
                            }};
                            
                            var template = "<p>{{#talk}}<h1>{{mushroom}}</h1>{{/talk}}</p>";
                            var view = Mustache.render(template,data); 
                            $(".alldiv4").html(view);
                            
                            //{#prop}{{.}}{/prop}如果是由对象组成的数组
                            //如果是由对象组成的数组
                            var data = {talk:["悦悦","我","爱","你"]};
                            var template = "<p>{{#talk}}<h1>{{.}}</h1>{{/talk}}</p>";
                            var view = Mustache.render(template,data); 
                            $(".alldiv5").html(view);
                            
                            //动态渲染,根据实际情况看,只能渲染{{#prop}}内容{{/prop}}这一层,可以将prop替换成想要的标签,并保留其标签内的内容
                            var data = {
                                talk:function(){
                                    return function(text,render){
                                        return "<b>"+render(text)+"</b>"
                                    };
                                }
                            }
                            var template = "{{#talk}}<h1>动态渲染~~</h1>{{/talk}}";
                            var view = Mustache.render(template,data); 
                            $(".alldiv6").html(view);
                            
                            //{{^prop}}内容{{/prop}} if else判断,与#相反,如果是否定的才能显示
                            var data = {prop:function(){
                                return false;
                            }};
                            var template = "<p>{{^prop}}我爱悦悦{{/prop}}</p>";
                            var view = Mustache.render(template,data); 
                            $(".alldiv7").html(view);
                            
                            //渲染上下文
                            var data = {
                                pt:"love",
                                wwprop:{
                                    bbc:"222",
                                    wprop:{
                                        bbq:"123",
                                        prop:{
                                            talk:"JUST"
                                        }
                                    }
                                }
                            }
                            var template = "{{#wwprop}}{{#wprop}}{{bbq}}~{{#prop}}{{bbc}}~{{talk}}~{{pt}}{{/prop}}{{/wprop}}{{/wwprop}}";
                            var view = Mustache.render(template,data); 
                            $(".alldiv8").html(view);
                            
                            //方法里可再次执行变量中的表达式[一直是失败的不知道原因]
                            var data = {
                                name:"年龄"+"{{age}}",
                                agea:function(){
                                    return function(text,render){
                                        console.log(text);
                                        return "<b>"+render(text)+"</b>";
                                    }
                                },
                                age:"18"
                            };
                            var template = "{{#agea}}HI~{{name}}{{/agea}}";
                            var view = Mustache.render(template,data); 
                            $(".alldiv9").html(view);
//                          输出结果:
//
//                          Hi {{age}}Tater.
//                          <b>Hi 18Tater.</b>
//                          9.{{^}}与{{#}}相反,如果变量是null、undefined、 false、和空数组讲输出结果
//
//                          10.{{!  }}注释
        </script>
    </body>

</html>

相关文章

网友评论

      本文标题:Mustache胡子模板学习心得[盖楼中]

      本文链接:https://www.haomeiwen.com/subject/lxglpxtx.html