ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

了解Ajax响应数据的渲染及模板引擎

2021-05-04 15:03:17  阅读:97  来源: 互联网

标签:渲染 data JSON Ajax 拼接 字符串 数据 模板


Ajax的响应数据格式有:

  • XML,一种数据描述的手段,缺点:数据冗余太多。

  • JSON(JavaScript Object Notation,JavaScript)对象表示法,数据描述的手段,类似于JavaScript字面量方式。服务端采用JSON格式返回数据,客户端按照JSON格式解析数据。

这些数据协议都是Ajax在请求过程中会用到的,所以当服务器发出某种格式的数据时,客户端就可以采用JavaScript相应的方法解析这种格式。

JSON Server

  • json-server 是一个Node模块,运行Express服务器,可以指定一个json文件作为api的数据源。我们可以用它快速搭建一个web服务器。json-server的学习使用手册https://github.com/typicode/json-server

响应数据的渲染

客户端拿到请求到的数据之后就需要把这些数据渲染到页面上。

  简单的数据结构,可以采用字符串拼接的方式处理。

  复杂的数据,可以使用模板引擎或ES6提供的模板字符串进行处理。

这里使用字符串拼接的方式,来将获取的响应数据进行页面渲染。

var box = document.getElementById("box");
var xhr = new XMLHttpRequest();
xhr.open("GET","http://localhost:3000/users");
xhr.send(null);
xhr.onreadystatechange = function(){
     if(xhr.readyState == 4){
        var data = JSON.parse(this.responseText);
        var str = "";
        console.log(data);
        //循环 遍历数组
        for(var i = 0;i < data.length;i ++){
            //第一种 采用字符串拼接
            // str += "<tr><td>" + data[i].id + "</td >" + 
            //     "<td>" + data[i].name + "</td>" + 
            //     "<td>" + data[i].class + "</td></tr>";

            //第二种 采用 模板字符串 进行拼接
            str += `<tr>
                      <td>${data[i].id}</td>
                      <td>${data[i].name}</td>
                      <td>${data[i].class}</td>
                   </tr>` 
        }
        box.innerHTML += str;
    }
}
   

 上述的字符串拼接,当数据少时可以使用,但当数据复杂又多时,字符串拼接就显得复杂又易出错了。所以模板引擎的使用就解决了 这一问题。

模板引擎

  • 作用:减少字符串拼接;

    ​ 在模板里解析json,然后跟html内容拼接,性能会更好

artTemplate

  • art-Template是一个简约、快速的模板引擎。

  • 中文使用文档:artTemplate中文使用文档

  • 将逻辑表达式语句写在<% 与 %>符号中

    将输出表达式写在<%= content%>中

  • 使用步骤:

    ①引入模板文件

    ②创建模板

    ③将数据跟模板进行绑定

    ④在模板里编写代码解析数据

    ⑤绑定数据和模板之后得到内容

    ⑥将数据内容写到页面上。

关于模板引擎的使用及优势,可以参考留言板代码这个案例:留言板主要部分代码

标签:渲染,data,JSON,Ajax,拼接,字符串,数据,模板
来源: https://www.cnblogs.com/dreamtown/p/14729506.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有