• 超快的模板引擎 artTemplate.js


    <!DOCTYPE html>        
    <html lang="en">        
    <head>        
        <meta charset="UTF-8">        
        <title>超快的模板引擎 artTemplate.js</title>      
        <style type="text/css">  
        </style>       
    </head>        
    <body>  
      <div id="content"></div>
      
      <script id="test" type="text/html">
        <h1>{{title}}</h1>
        <ul>
            {{each list as value i}}
                <li>索引 {{i + 1}} :{{value}}</li>
            {{/each}}
        </ul>
      </script>
    
      <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
      <script src="http://cdn.staticfile.org/artTemplate.js/3.0.1/template.js"></script>
      <script type="text/javascript"> 
        var data = {
            title: '标签',
            list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']
        };
        var html = template('test', data);
        $('#content').html(html);
      </script>  
    </body>        
    </html>   

    如果后端给的数据是一个数组,数据里包含一个对象,前端页面需要把这个对象里的每一个字段以及字段对应的内容都展示出来,且这个对象里有多少字段有哪些字段都不是已知的,可以参考下面的代码:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>超快的模板引擎 artTemplate.js</title>
        <style type="text/css">
        .m-list-item {
            position: relative;
            padding: 19px 18px 28px;
            background: #2C355D;
            border-bottom: 1px solid #5C70B0;
            list-style-type: none;
        }
    
        .m-list-item {
            list-style-type: none;
        }
    
        .m-right-row {
            line-height: 30px;
        }
    
        .m-right-label {
            display: inline-block;
            font-size: 14px;
            color: #FFFFFF;
            vertical-align: top;
        }
    
        .m-right-text {
            display: inline-block;
            margin: 0 0 0 10px;
            max- 500px;
            font-size: 14px;
            color: #999999;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            vertical-align: top;
        }
        </style>
    </head>
    
    <body>
        <ul id="m-list"></ul>
        <script id="m-list-tpl" type="text/html">
            {{each data as info i}}
            <li class="m-list-item">
                {{each info as item j}}
                    <div class="m-right-row">
                        <span class="m-right-label">{{item.label}}:</span>
                        <span class="m-right-text">{{item.content}}</span>
                    </div>
                {{/each}}
            </li>
            {{/each}}
        </script>
        <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
        <script src="http://cdn.staticfile.org/artTemplate.js/3.0.1/template.js"></script>
        <script type="text/javascript">
        var data = {
            protocols: [{
                'title': '80/HTTP',
                'Status Line': '200 OK',
                'Page Title': 'Core Databases',
                'Server': 'Apache httpd'
            }, {
                'title': '443/HTTPS',
                'Cipher Suite': 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xC02F)',
                'Version': 'TLSv1.2',
                'Heartbleed': 'Heartbeat Enabled. Immune to Heartbleed.',
                'Trusted': 'True'
            }]
        };
        var result = [];
        for (var i = 0; i < data.protocols.length; i++) {
            var itemArr = [];
            for (var item in data.protocols[i]) {
                var temp = {};
                temp.label = item;
                temp.content = data.protocols[i][item];
                itemArr.push(temp)
            }
            result.push(itemArr);
        }
        var data = { data: result };
        var html = template('m-list-tpl', data);
        $('#m-list').html(html);
        </script>
    </body>
    
    </html>

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>超快的模板引擎 artTemplate.js</title>
        <style type="text/css">
        .m-list-item-title{line-height: 28px; font-size: 20px;color: #FFFFFF;}
        .m-list-item {
            position: relative;
            padding: 19px 18px 28px;
            background: #2C355D;
            border-bottom: 1px solid #5C70B0;
            list-style-type: none;
        }
    
        .m-list-item {
            list-style-type: none;
        }
    
        .m-right-row {
            line-height: 30px;
        }
    
        .m-right-label {
            display: inline-block;
            font-size: 14px;
            color: #FFFFFF;
            vertical-align: top;
        }
    
        .m-right-text {
            display: inline-block;
            margin: 0 0 0 10px;
            max- 500px;
            font-size: 14px;
            color: #999999;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            vertical-align: top;
        }
        </style>
    </head>
    
    <body>
        <ul id="m-list"></ul>
        <script id="m-list-tpl" type="text/html">
            {{each data as info i}}
            <li class="m-list-item">
                <div class="m-list-item-title">{{info.title}}</div>     
                {{each info.content as item j}}
                    <div class="m-right-row">
                        <span class="m-right-label">{{item.label}}:</span>
                        <span class="m-right-text">{{item.content}}</span>
                    </div>
                {{/each}}
            </li>
            {{/each}}
        </script>
        <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
        <script src="http://cdn.staticfile.org/artTemplate.js/3.0.1/template.js"></script>
        <script type="text/javascript">
        var data = {
            protocols: [{
                'title': '80/HTTP',
                'Status Line': '200 OK',
                'Page Title': 'Core Databases',
                'Server': 'Apache httpd'
            }, {
                'title': '443/HTTPS',
                'Cipher Suite': 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xC02F)',
                'Version': 'TLSv1.2',
                'Heartbleed': 'Heartbeat Enabled. Immune to Heartbleed.',
                'Trusted': 'True'
            }]
        };
        var result = [];
        for (var i = 0; i < data.protocols.length; i++) {
            var itemArr = {
                title: data.protocols[i].title,
                content: []
            };
            delete data.protocols[i].title;
            for (var item in data.protocols[i]) {
                var temp = {};
                temp.label = item;
                temp.content = data.protocols[i][item];
                itemArr.content.push(temp)
            }
            result.push(itemArr);
        }
        var data = { data: result };
        var html = template('m-list-tpl', data);
        $('#m-list').html(html);
        </script>
    </body>
    
    </html>

    模板中的条件判断:

    {{if info.filter}}
        <span class="m-legend-filter active js-filter" data-type="{{data[i].type}}"></span>  
    {{else}}
        <span class="m-legend-filter js-filter" data-type="{{data[i].type}}"></span>  
    {{/if}}

    artTemplate github下载地址:https://github.com/aui/art-template

    备注:欢迎加入web前端求职招聘qq群:668352707

  • 相关阅读:
    MatOfPoint作为minAreaRect的参数总是报错"throw new IllegalArgumentException("Incomatible Mat");
    !! Android developer 最新国内镜像
    下载安装和OpenCV匹配的Android开发环境
    Android View的onTouchEvent和OnTouch区别
    org.opencv.android.JavaCameraView 摄像机方向的问题
    C语言 · 数字三角形
    C语言 · Torry的困惑(基本型)
    C语言 · 高精度加法
    C语言 · Anagrams问题
    C语言 · 字符串对比
  • 原文地址:https://www.cnblogs.com/xutongbao/p/9924903.html
Copyright © 2020-2023  润新知