zoukankan      html  css  js  c++  java
  • 前端js模板库 JinkoTemplate

    有时候需要使用ajax来异步生成html,最土的方法就是用js的‘+’连接html代码,生成繁琐。一旦需要修改,对于少量的html代码到没啥问题,要是比较复杂的样式时,就真坑爹了,眼花缭乱有木有?JinkoTemplate库可以直接通过JinkoTemplate语法快速生成所需要的html代码,修改的时候也相当轻松,就如同修改当前html文件里的代码一样,不需要去修改js的地方。

     

    以下是使用Demo:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title></title>
     6 </head>
     7 <body>
     8 <script type="text/javascript" src="jinko.template.js"></script>
     9 
    10 <script type="text/html" name="" id="aaa" cols="30" rows="10">
    11     {@exp var x = 'end'}
    12     {@loop data,row,key,seq}
    13         {@seq}:{@key} = {@row} {@x}<br>
    14         {@if row.a==1 && row.c==4}
    15             yes
    16         {@elseif row.c==3}
    17             no
    18         {@endif}
    19     {@endloop}
    20     <br><br>
    21     {@loop ary,row,key,seq}
    22         {@seq}:{@key} = {@row}<br>
    23     {@endloop}
    24     <br><br>
    25     {@if booltrue}
    26         true&nbsp;
    27     {@endif}
    28     {@if boolfalse}
    29         false
    30     {@endif}
    31     <br><br>
    32     {@if yi == 1}
    33 34     {@elseif yi == 2}
    35 36     {@else}
    37 38     {@endif}
    39 
    40 </script>
    41 <div id="bbb"></div>
    42 <script type="text/javascript">
    43     var tpl = document.getElementById('aaa').innerHTML;
    44     var jinkoTpl = new JinkoTemplate();
    45     jinkoTpl.assign('data', {a:1, asdb:'22110', c:3});
    46     jinkoTpl.assign('ary', [1,2,3,4, '你好', 'nihao']);
    47     jinkoTpl.assign('booltrue', true);
    48     jinkoTpl.assign('boolfalse', false);
    49     jinkoTpl.assign('yi', 2);
    50     document.getElementById('bbb').innerHTML = jinkoTpl.parse(tpl);
    51 </script>
    52 </body>
    53 </html>

     demo运行结果:

    1:a = 1 end
    2:asdb = 22110 end
    3:c = 3 end
    
    
    1:0 = 1
    2:1 = 2
    3:2 = 3
    4:3 = 4
    5:4 = 你好
    6:5 = nihao
    
    
    true  
    
    二

    模板语法:

    模板语句由‘{@’和‘}’组成,共有由下五个句子:

    {@if} {@else} {@elseif} {@endif} if语句

    if语句及分支,用法{@if 表达式}

    {@endif}为结束标记

    {@loop} {@endloop} 循环语句

    {@loop}有四个参数{@loop data,row,key,seq},参数之间用英文逗号隔开。其中,data和row参数是必须的。data是数据源(如数组等),row是遍历中的data的子集。key和seq参数是可选的,key是数据源索引(数组下标),seq是当前第几个子集(序号)。

    {@endloop}为循环结束标记

    {@exp} js表达式

    可以执行js语句

    {@变量} 输出变量值

    模板对象的assign方法:

    assign用于给模板对象指定的内部变量赋值,内部变量则用于模板语法中可以直接使用的变量

    模板对象的parse方法:

    parse方法接收一个参数,该参数为模板字符串,对该字符串进行解析和生成最终的html语句并返回

    示例:

    1 var tpl = document.getElementById('aaa').innerHTML; //获取模板内容
    2 var jinkoTpl = new JinkoTemplate(); //创建模板对象
    3 jinkoTpl.assign('data', {a:1, asdb:'22110', c:3}); //赋值模板对象内部变量
    4 jinkoTpl.assign('ary', [1,2,3,4, '你好', 'nihao']);//赋值模板对象内部变量
    5 jinkoTpl.assign('booltrue', true); //赋值模板对象内部变量
    6 jinkoTpl.assign('boolfalse', false); //赋值模板对象内部变量
    7 jinkoTpl.assign('yi', 2); //赋值模板对象内部变量
    8 document.getElementById('bbb').innerHTML = jinkoTpl.parse(tpl); //解析模板并添加到DOM元素中

    库下载地址(未压缩): http://files.cnblogs.com/files/JinkoWu/jinko.template.js 

    库下载地址(压缩): http://files.cnblogs.com/files/JinkoWu/jinko.template.min.js 

  • 相关阅读:
    IPC之PIPE
    MSChart的研究(转)
    计算机信息类ComputerInfo(车)
    c# 操作Word总结(车)
    js跳转页面(转)
    textarea中的回车识别问题
    js的页面传值cookie.session
    destoon使用
    vscode 配置php
    vscode开发c#
  • 原文地址:https://www.cnblogs.com/JinkoWu/p/5259030.html
Copyright © 2011-2022 走看看