artTemplate模版使用

循环{{each arr as value i}}
<body>
    <input type="text" placeholder="请输入" id="keyword" value="java"/>
    <input type="button" value="确定" id="but" />
    <ul id="uu"></ul>


    <!-- 用于jq库 -->
    <script src="../js/jquery-1.12.1.js"></script>
    <!-- 引入模版 -->
    <script src="../js/template-web.js"></script>
    <!-- 编写模版 -->
    <script id="resultTemplate" type="text/html">
       	//each: 循环
        //s: data中的属性
        //as: 关键字
        //value: 每次遍历的值
        //i: 索引
        {{each s as value i}}
            <li>{{i}}:{{value}}</li>
        {{/each}}
    </script>
    <script>
        document.getElementById("but").onclick = function () {
            var keyword = document.getElementById("keyword").value;

            $.ajax({
                url: "https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su",
                data: { wd: keyword },
                success: function (data) {
                    //将模版和数据一起传入, 返回的是已经编写好的html代码
                    var html = template("resultTemplate", data);
                    //将代码直接放入即可使用
                    document.getElementById("uu").innerHTML= html;
                },
                dataType: "jsonp",
                jsonp: "cb",
                jsonpCallback: "haha"
            });
        };
    </script>
</body>
if语句 {{if isAdmain}}
<body>
    <div id="conetent"></div>

    <!-- 引擎模版 -->
    <script src="../js/template-web.js"></script>
    <!-- 模版 -->
    <script type="text/html" id="text">
        <!-- if语句:  isAdmain: data对象中的关键字 -->
        {{if isAdmain}}
            <!-- data中的关键字 -->
            <h2>title</h2>
            <!-- ul放在循环语句外面, 不循环 -->
            <ul>
                {{each list as value i}}
                    <li>{{i}}:{{value}}</li>
                {{/each}}
            </ul>
        {{/if}}

        {{if !isAdmain}}
            <h1>没有该数据</h1>
        {{/if}}
    </script>
    <script>
        var data = {
            title:'条件判断基本粒子',
            isAdmain:false,
            list:['文艺','青年','沙雕','白龙马','火焰山','上完课','去拉屎']
        };
        var html = template("text",data);
        document.getElementById("conetent").innerHTML = html;
    </script>
</body>
当数据只是数组格式时
<body>
    <div id="content"></div>

    <!-- 引入引擎模版 -->
    <script src="../js/template-web.js"></script>
    <!-- 编写模版 -->
    <script id="text" type="text/html">
        <ul>
            <!-- arr: 需要解析的那个数组的名字叫什么就写什么 -->
            {{each arr as value i}}
                <li>{{i}}:{{value}}</li>
            {{/each}}
        </ul>
    </script>
    <script>
        var data = ["张三丰", "张翠山", "张无忌", "张大侠", "张二狗", "张小福"];
        //数组模式无法.出来, 所以封装进对象里
        var temp = {};
        temp.arr = data;
        var html = template("text", temp);
        document.getElementById("content").innerHTML = html;
    </script>
</body>
转义{{#}} 与 不转义{{}}
<body>
    <div id="content"></div>

    <!-- 引入引擎模版 -->
    <script src="../js/template-web.js"></script>
    <!-- 建模版 -->
    <script id="text" type="text/html">
        <p>不转义: {{#value}}</p>
        <p>转义: {{value}}</p>
    </script>
    <script>
        //数据
        var data = {value:'<span style="olor:red">这是一个P</span>'};
        //放入方法内
        var html = template("text",data);
        document.getElementById("content").innerHTML = html;
    </script>
</body>
案例

天气查询案例, 该编码为中国气象网城市编码(不是地区编码

地址http://cdn.weather.hao.360.cn/sed_api_weather_info.php
作用获取天气信息
请求类型get
参数app:hao360(固定值); code:城市编码(101010100北京);
_jsonp:回调函数名
返回字段说明area:地区信息
pm25: pm2.5数据
pubdate:数据发布日期
pubtime:数据发布时间
time:时间戳
weather:天气信息
date:时间
day: 白天
night:黑夜
dawn:黎明
<body>
    <select name="city" id="city">
        <option value="101010100">北京市</option>
        <option value="101280101">广州市</option>
    </select>
    <input type="button" id="but" value="查询" />
    <div id="conetent"></div>

    <script type="text/javascript" src="../js/jquery-1.12.1.js"></script>
    <script type="text/javascript" src="../js/template-web.js"></script>
    <script type="text/html" id="weatherTemplate">
        <ul>
            <span>发布时间: {{pubdate}} - {{pubtime}}</span>
            <ul>
                <li>城市: {{realtime.city_name}}</li>
                <li>温度: {{realtime.weather.temperature}}</li>
                <li>天气: {{realtime.weather.info}}</li>
                <li>风向: {{realtime.wind.direct}}</li>
                <li>风级: {{realtime.wind.power}}</li>
            </ul>
        </ul>
    </script>
    <script>
        document.getElementById("but").onclick = function () {
            //获取地区编码
            var cityValue = document.getElementById("city").value;
            //发送跨域请求
            $.ajax({
                url: "http://cdn.weather.hao.360.cn/sed_api_weather_info.php",
                data: {
                    app: "hao360",
                    code: cityValue
                },
                jsonp: "_jsonp",
                dataType: "jsonp",
                success: function (data) {
                    console.log(data);
                    console.log("==========================================================");
                    //放入模版
                    var html = template("weatherTemplate", data);
                    document.getElementById("conetent").innerHTML = html;
                }
            });
        };
    </script>
</body>

在这里插入图片描述

Art-template是一款高性能、轻量级的模板引擎,适用于Node.js和浏览器环境。它以简洁明了的语法,支持模板继承、条件判断、循环遍历等常见功能,同时还提供了强大的过滤器和自定义标签功能。 Art-template使用逻辑如下: 1. 安装Art-template 可以通过npm安装Art-template,命令如下: ```npm install art-template --save``` 2. 引入Art-template 在Node.js中,可以使用require语句引入Art-template: ```const template = require('art-template');``` 在浏览器中,可以使用script标签引入Art-template: ```<script src="path/to/art-template.js"></script>``` 3. 编写模板 Art-template使用{{}}包裹变量、表达式或语句。例如,以下是一个简单的模板: ``` <!DOCTYPE html> <html> <head> <title>{{title}}</title> </head> <body> <h1>{{title}}</h1> <p>{{content}}</p> </body> </html> ``` 4. 渲染模板 使用template方法可以将模板渲染成字符串。例如: ``` const template = require('art-template'); const data = { title: 'Art-template', content: 'A lightweight and powerful template engine' }; const html = template('path/to/template', data); console.log(html); ``` 在上面的例子中,我们将data对象传递给了模板,使用{{}}包裹的变量会被替换成data对象中的对应值,最终输出渲染后的HTML字符串。 5. 高级用法 除了基本的变量替换,Art-template还支持模板继承、条件判断、循环遍历等高级用法。例如,以下是一个使用if语句和each语句的模板: ``` {{if isAdmin}} <p>Welcome, admin</p> {{else}} <p>Welcome, user</p> {{/if}} <ul> {{each list}} <li>{{$index}}. {{$value}}</li> {{/each}} </ul> ``` 以上就是Art-template使用逻辑,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值