zoukankan      html  css  js  c++  java
  • 模板

    模板是用在那里
    我们在做应用层面的项目开发,一般都是客户端给服务器发个请求,服务器给客户端响应数据。
    客户端得到数据,解析数据,将数据跟html 标签进行组装,然后放在页面上面.
    我们在解析数据,以及组装数据的时候非常麻烦
    模板:是帮助我们解析json 格式的数据,然后将数据跟html 标签进行组装


    我要使用这个模板,一般什么时候会用
    数据非常复杂的情况下,会使用模板进行解析.

    流行的模板引擎

    BaiduTemplatehttp://tangram.baidu.com/BaiduTemplate/ b百度

    ArtTemplate:https://github.com/aui/artTemplate t腾讯

    velocity.jshttps://github.com/shepherdwind/velocity.js/ a阿里

    Handlebars:http://handlebarsjs.com/ 国外

    一个页面可能会涉及到多次数据交互,就会用到多个模板。

     1  /*
     2     * 1:引入模板文件
     3     * 2:创建模板 <script type="text/template" id="templateId">
     4     * 3:将数据跟模板进行绑定 ,调用template-native.js 下面的一个template方法.
     5     *   模板的id需要解析的数据.
     6     * 4:假设我将数据跟模板进行绑定之后,模板文件template-native.js就会去解析模板里面的内容
     7     * 5:要准备模板里面的内容,模板里面的内容跟写到页面里面的标签有关系.
     8     * 6:我需要在模板里面去解析数据.我需要在模板里面去解析数据。
     9     * 7:在模板里面解析数据,模板提供两种语法
    10     *       1:一种是原生的语法
    11     *       2:新语法.
    12     *       模板里面支持两种类型的标签  <% %> 是用来写逻辑的,里面放的都是js 逻辑代码
    13     *       <%="kaikeba"%>
    14     * */
    15 
    16     /*
    17     * 模板的作用:将数据跟模板进行绑定,然后使用模板去解析数据,将数据跟标签进行组装,组装好之后返回一个新的字符串
    18     * 最后我们把这个字符串放在页面上面就可以
    19     * 使用模板的步骤
    20     *        要解析数据的时候,要将数据跟页面的标签进行拼接的时候
    21     *        1:引入模板文件  template-native.js  {{}}
    22     *        2:创建模板  <script type="text/template" id="templateId">
    23     *        3:将数据跟模板进行绑定  我们使用template 方法 ,这个方法  template-native.js 文件下面的
    24    *         4:我要在模板里面去解析数据,然后跟标签的内容进行拼接
    25       *      5:准备模板内容,模板内容跟写到页面上面的内容有关系
    26     *        6:解析数据  <% 写逻辑 %>  <%= 用来向模板输出js 里面的变量的值%>
    27     *        7:调用template 方法会一个字符串,将这个内容写到页面对应的位置即可.
    28     * */

     art template模板each遍历使用方法 

    1.标准语法(对象中有数组)

     1 <!DOCTYPE html>
     2 <html lang="en">
     3   <head>
     4     <meta charset="UTF-8" />
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     6     <meta http-equiv="X-UA-Compatible" content="ie=edge" />
     7     <title>Document</title>
     8   </head>
     9   <body>
    10     <div></div>
    11     <script src="art-template.js"></script>
    12 
    13     <script src="../jQuery/jquery.min.js"></script>
    14     <script>
    15       $(document).ready(function() {
    16         var List = [
    17           {
    18             List_name: "电脑配件",
    19             subList: [
    20               {
    21                 subList_name: "笔记本",
    22                 subsubList: ["笔记本1", "笔记本2", "笔记本3", "笔记本4"]
    23               },
    24               {
    25                 subList_name: "台式机",
    26                 subsubList: ["台式机1", "台式机2", "台式机3", "台式机4"]
    27               },
    28               {
    29                 subList_name: "交换机",
    30                 subsubList: ["交换机1", "交换机2", "交换机3", "交换机4"]
    31               },
    32               {
    33                 subList_name: "路由器",
    34                 subsubList: ["路由器1", "路由器2", "路由器3", "路由器4"]
    35               }
    36             ]
    37           }
    38         ];
    39         console.log(List[0].subList);
    40 
    41         var html = template("template1", { test: List });
    42         $("div").append(html);
    43       });
    44     </script>
    45     <script type="text/template" id="template1">
    46           <tr>
    47            {{each test[0].subList[0].subsubList  value i }}
    48            <td>{{value}}------------------{{i+1}}</td>
    49            {{/each}}
    50           </tr>
    51         <tr>
    52                 {{each test[0].subList[1].subsubList  value i }}
    53                 <td>{{value}}------------------{{i+1}}</td>
    54                 {{/each}}
    55         </tr>
    56         <tr>
    57               {{each test[0].subList[2].subsubList  value i }}
    58               <td>{{value}}------------------{{i+1}}</td>
    59               {{/each}}
    60       </tr>
    61       <tr>
    62               {{each test[0].subList[3].subsubList  value i }}
    63               <td>{{value}}------------------{{i+1}}</td>
    64               {{/each}}
    65       </tr>
    66     </script>
    67   </body>
    68 </html>

    2.标准语法(数组中有对象)

     1 <!DOCTYPE html>
     2 <html lang="en">
     3   <head>
     4     <meta charset="UTF-8" />
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     6     <meta http-equiv="X-UA-Compatible" content="ie=edge" />
     7     <title>Document</title>
     8   </head>
     9   <body>
    10     <body>
    11       <table>
    12         <tr>
    13           <td>省份</td>
    14           <td>省份</td>
    15           <td>省份</td>
    16           <td>省份</td>
    17           <td>省份</td>
    18           <td>省份</td>
    19         </tr>
    20       </table>
    21     </body>
    22     <script src="art-template.js"></script>
    23 
    24     <script src="../jQuery/jquery.min.js"></script>
    25 
    26     <script>
    27       $(function() {
    28         var arr = [
    29           { name: "湖南", happy: "西安", victory: "北京", yahoo: "重庆" },
    30           { name: "苹果", happy: "橘子", victory: "西瓜", yahoo: "草莓" }
    31         ];
    32 
    33         var html = template("test1", { test: arr }); //将数组转为对象
    34         $("table").append(html);
    35       });
    36     </script>
    37 
    38     <script id="test1" type="text/html">
    39 
    40       {{each test}}
    41       <tr>
    42           <td>{{$value.name}}</td>
    43           <td>{{$value.happy}}</td>
    44           <td>{{$value.victory}}</td>
    45       </tr>
    46       {{/each}}
    47     </script>
    48   </body>
    49 </html>

    3.原始语法

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6     <script src="../js/jquery.min.js"></script>
     7     <script src="../js/template-native.js"></script>
     8     <style>
     9         table {
    10              600px;
    11             border-collapse: collapse;
    12         }
    13         td {
    14             height: 40px;
    15             text-align: center;
    16             border: 1px solid #CCC;
    17         }
    18     </style>
    19 
    20 </head>
    21 <body>
    22 <input type="text" id="start" placeholder="始发站" value="武汉">
    23 <input type="text" id="end" placeholder="终点站" value="长沙">
    24 <input type="button" value="查询">
    25 <table>
    26     <tr>
    27         <td>车次</td>
    28         <td>类型</td>
    29         <td>出发站</td>
    30         <td>到达站</td>
    31         <td>出发时间</td>
    32         <td>到达时间</td>
    33         <td>距离</td>
    34         <td>预定</td>
    35     </tr>
    36 </table>
    37 <script type="text/template" id="templateId">
    38     <%for(var i=0;i<result.list.length;i++){%>
    39         <tr>
    40             <td><%=result.list[i].trainno%></td>
    41             <td><%=result.list[i].type%></td>
    42             <td><%=result.list[i].station%></td>
    43             <td><%=result.list[i].endstation%></td>
    44             <td><%=result.list[i].departuretime%></td>
    45             <td><%=result.list[i].arrivaltime%></td>
    46             <td><%=result.list[i].priceyz%></td>
    47             <td><input type="button" value="预定" data-trainno="<%=result[i].trainno%>"></td>
    48         </tr>
    49     <%}%>
    50 </script>
    51 <script>
    52     $(function(){
    53 
    54            $("input[type=button]").on("click",function(){
    55                    var start=$("#start").val();
    56                    var end=$("#end").val();
    57                    $.ajax({
    58                         url:"",
    59                         data:{
    60                             appkey:"",
    61                             start:start,
    62                             end:end
    63                         },
    64                         type:"GET",
    65                         dataType:"jsonp",/*开启跨域*/
    66                         success:function(data){
    67                             console.log(data);
    68                              //渲染到页面.
    69                             /*
    70                             * 使用的腾讯的 artTemplate
    71                             * */
    72                             var html=template("templateId",data);
    73                             console.log(html);
    74                             $("table").append(html);
    75                         }
    76                    })
    77 
    78            });
    79 
    80           /*这个数据是从后台过来的预定按钮要添加点击事件.*/
    81           $("table").delegate("input[type=button]","click",function(){
    82               console.log(this.dataset.trainno);
    83           })
    84     });
    85 </script>
    86 </body>
    87 </html>
  • 相关阅读:
    eas之动态刷新Table
    eas之导入导出
    eas之事件
    eas之获得任何一个KDTable的选中行
    eas之创建一个UI界面并对其操作
    eas之style接口
    eas之指定虚模式
    eas之数据融合
    eas之kdtable格式化
    eas之视图冻结与解冻
  • 原文地址:https://www.cnblogs.com/it-Ren/p/10665487.html
Copyright © 2011-2022 走看看