art-template标准语法

什么是标准语法

art-template提供了"{{}}"这种语法格式,在{{}}内可以及进行变量输出,或循环数组等操作,这种{{}}语法在art-template中被称为标准语法

标准语法 - 输出

{{value}}
{{obj.key}}
{{obj['key']}}
{{a ? b : c}}
{{a || b}}
{{a + b}}

在{{}}语法中,可以进行变量的输出,对象属性的输出,三元表达式输出,逻辑或输出,加减乘除等表达式输出

标准语法 - 原文输出

{{@ value}}

如果要输出的value值中,包含了HTML结构,则需要使用原文输出语法,才能保证HTML标签被正常渲染,否则会输出HTML的标签内容

标准语法 - 条件输出

如果要实现条件输出,则可以在{{}}中使用if... else if... /if的方式,进行按需输出

{{if value}} 按需输出的内容 {{/if}}
{{if v1}}  按需输出的内容 {{else if v2}} 按需输出的内容 {{/if}}

标准语法 - 循环输出

如果要实现循环输出,则可以在{{}}内,通过each语法循环数组,当前循环的索引使用$index及逆行访问,当前的循环使用$value进行访问

{{each arr}}
    {{$index}} {{$value}}
{{/each}}

标准语法 - 过滤器

过滤器的本质,就是一个function处理函数

{{value | filterName}}

过滤器语法类似管道操作符,它的上一个输出作为下一个输入

定义过滤器的基本语法如下:

template.defaults.imports.filterName = function(value) {/*return处理的结果*/}
<div>注册时间: {{regTime | dataFormat}}</div>

定义一个格式化时间的过滤器dateFormate如下:

template.defaults.imports.dateFormat = function(date) {
    var y = date.getFullYear()
    var m = date.getMonth() + 1 //月份从0开始 所以需要+1
    var d = date.getDate()

    return y + '-' + m + '-' + d //注意 过滤器最后一定要return一个值
}

 

总结标准语法(代码)

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../../js/jQuery.js"></script>
    <!--导入模板引擎后,在window全局多一个叫做
        template('模板的id', 需要渲染的数据对象)函数-->
    <script src="../../js/template-web.js"></script>
</head>

<body>
    <div id="container"></div>
    <!--模板的HTML结构必须定义到script中 并且将type改为"text/html-->
    <!--"{{}}"是art-template提供的一个占位符 表示这里要填充数据-->
    <script type="text/html" id="tpl-user">
        <h1>{{name}} -------------- {{age}}</h1>
        {{test}} {{@ test}}
        <div>
            {{if flag === 0}} flag的值是0 {{/if}}
        </div>
        <div>
            {{if flag === 0}} flag的值是0 {{else if flag === 1}} flag的值是1 {{/if}}
        </div>
        <ul>
            {{each hobby}}
            <li>索引是: {{$index}}, 循环项是: {{$value}}</li>
            {{/each}}
        </ul>
        <h3>{{regTime | dateFormat}}</h3>
    </script>

    <script>
        template.defaults.imports.dateFormat = function(date) {
            // console.log(date);
            var y = date.getFullYear()
            var m = date.getMonth() + 1
            var d = date.getDate()
            return y + '-' + m + '-' + d
        }

        //定义需要渲染的数据
        var data = {
            name: 'zs',
            age: 20,
            test: '<h3>测试原文输出</h3>',
            flag: 1,
            hobby: ['吃饭', '睡觉', '写代码'],
            regTime: new Date()
        };
        //调用template()函数
        var htmlstr = template('tpl-user', data);
        // console.log(html);

        //渲染UI结构 将template方法返回的内容填充到元素内部
        $('#container').html(htmlstr);
    </script>
</body>

</html>

 

 


版权声明:本文为m0_63400611原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。