【Ajax学习】模板引擎

本文探讨了在渲染UI时遇到的字符串拼接问题,提出使用模板引擎作为解决方案。模板引擎如art-template,能够简化代码,提高可读性和维护性。通过示例展示了art-template的使用步骤,包括定义数据、模板结构、调用渲染函数。同时,详细解释了标准语法、条件输出、循环输出和过滤器等功能,以实现更高效、灵活的HTML结构生成。
摘要由CSDN通过智能技术生成

1 渲染Ul结构时遇到的问题

上述代码是通过字符串拼接的形式,来渲染UI结构。
如果UI结构比较复杂,则拼接字符串的时候需要格外注意引号之前的嵌套。且一旦需求发生变化,修改起来也非常麻烦.

2 什么是模板引擎

模板引擎,顾名思义,它可以根据程序员指定的模板结构和数据,自动生成一个完整的HTML页面。

 3 模板引擎的好处

减少了字符串的拼接操作

使代码结构更清晰
使代码更易于阅读与维护

art-template模板引擎

使用步骤:

1、导入art-template

2、定义数据
3、定义模板 模板的结构必须定义到script标签中
4、调用template函数
5、渲染HTML结构

template('模板的id', 需要渲染的数据);

标准语法:

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

输出格式:

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

原文输出:

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

<div id="container"></div>
    <script type="text.html" id="tpl-user">
        <h1>{{name}}   ---------  {{age}}
            {{@test}}
        </h1>
    </script>
    <script>
        var data = {name: 'zs', age: 20, test: '<h3>测试</h3>'};

        //调用template函数
        var htmlStr = template('tpl-user', data);
        console.log(htmlStr);
        $("#container").html(htmlStr)
    </script>

条件输出:

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

<div id="container"></div>
    <script type="text.html" id="tpl-user">
        <h1>{{name}}   ---------  {{age}}
            {{@test}}
        </h1>
        <div>
            {{if flag === 0}}
            flag的值为0
            {{else if flag === 1}}
            flag的值为1
            {{/if}}
        </div>
    </script>
    <script>
        var data = {name: 'zs', age: 20, test: '<h3>测试</h3>', flag: 0};

        //调用template函数
        var htmlStr = template('tpl-user', data);
        console.log(htmlStr);
        $("#container").html(htmlStr)
    </script>

循环输出:

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

<div id="container"></div>
    <script type="text.html" id="tpl-user">
        <h1>{{name}}   ---------  {{age}}
            {{@test}}
        </h1>
        <div>
            {{if flag === 0}}
            flag的值为0
            {{else if flag === 1}}
            flag的值为1
            {{/if}}
        </div>

        <ul>
            {{each hobby}}
            <li>索引是:{{$index}}, 内容是:{{$value}}</li>
            {{/each}}
        </ul>
    </script>
    <script>
        var data = {name: 'zs', age: 20, test: '<h3>测试</h3>', flag: 0,
                   hobby: ['吃饭', '睡觉', '写代码']};

        //调用template函数
        var htmlStr = template('tpl-user', data);
        console.log(htmlStr);
        $("#container").html(htmlStr)
    </script>

过滤器

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

定义过滤器的基本语法:

注意:记得过滤器函数一定要return!!

<div>{{regTime | dataFormat}}</div>
    </script>
    <script>
        //定义处理时间的过滤器
        template.defaults.imports.dataFormat = function(date){
            var year = date.getFullYear();
            var month = date.getMonth()+1;
            var day = date.getDate();
            return year + '-' + month + '-' + day;

        }
        var data = {name: 'zs', age: 20, test: '<h3>测试</h3>', flag: 0,
                   hobby: ['吃饭', '睡觉', '写代码'], regTime: new Date()};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值