如何优雅的把后台数据(通常是JSON)轻松渲染到html页面
如何优雅的把后台数据(通常是JSON)轻松渲染到html页面
在我们做前后端分离的时候,都有遇到过一些看起卡很简答,确无从下手的问题把。比方说后台给了前端一个list集合,集合里面有很多学生,我们现在要对这些学生在前端渲染展示。我们怎么办?
当然如果你是使用了强大的框架,完全不必要在意这些问题了。
但是当我们啥都没有的时候,我们可以考虑使用handlerbars这款强大的工具。可以非常轻松,侵入化很小,快捷的实现数据到页面的渲染。
1. 模板引擎handlerbars
- 官方网站:http://handlebarsjs.com/
- handlerbars简介:是一个纯js的库,主要功能通过对view和data的分离来快速构建Web模板,可以很方便简洁的使用
- 语法超级简单 {{key}},通过两个花括号包起来,更多语法参考官方文档[【官方文档】](http://handlebarsjs.com/guide/#what-is-handlebars)
2. 效果展示
3. 最简单的使用demo
- 准备个测试页面,页面引入handlebars.js
- 引入handlerbars.js
- 找个表格演示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- //todo 2 我们找个表格演示下 -->
<!-- <h3>学生信息表</h3> -->
<table width="500" align="center" cellspacing="0" cellpadding="6">
<caption>学生信息表</caption>
<thead>
<tr align="center">
<td>姓名</td>
<td>性别</td>
<td>芳龄</td>
<td>班级</td>
<td>备注</td>
</tr>
</thead>
<tbody>
<!--//todo 表格内容使用模板渲染 -->
</tbody>
</table>
<!--//todo 1 引入handlerbars工具 -->
<script src="./js/handlebars.js"></script>
</body>
</html>
- 模拟后台的数据,假设后台返回了一个学生列表,如下(student)
var student = [
{name: '鲁班七号', gender: '未知', age: '20', class: '一年级射手班', note: '智商二百五的电玩小子,biubiubiu,就是腿短!'},
{name: '安琪拉', gender: '女', age: '18', class: '一年级法师班', note: '什么什么魔法书!'},
{name: '程咬金', gender: '男', age: '30', class: '一年级二班', note: '爱与正义之斧,偷偷推到'},
{name: '阿珂', gender: '女', age: '19', class: '三年级刺客班', note: '哪里亮了点哪里,都是我的人头!'},
{name: '李白', gender: '男', age: '20', class: '一年级酒酒仙班', note: '但愿长醉不愿醒,我是来无影去无踪,帅!'},
{name: '森瑶', gender: '女', age: '20', class: '皮肤班级', note: '不然梦会碎还是破!'}
]
- 定义模板,注意type="text/x-handlebars-template"必须这样写
<!--//todo 表格内容使用模板渲染 -->
<script type="text/x-handlebars-template" id="template">
{{#each this}}
<tr align="center">
<td>{{name}}</td>
<td>{{gender}}</td>
<td>{{age}}</td>
<td>{{classes}}</td>
<td>{{note}}</td>
</tr>
{{/each}}
</script>
- 渲染数据
//获取需要放数据的容器
var container = document.querySelector('#container');
//也就是获取我们定义的模板的dom对象。主要是想获取里面的内容(innerHTML)
var templateDom = document.querySelector('#template');
//编译模板的里的内容
var template = Handlebars.compile(templateDom.innerHTML);
//把后台获取到的数据student渲染到页面
container.innerHTML = template(student);
4. 附上完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"">
<title>m-web</title>
</head>
<body>
<!-- <h3>学生信息表</h3> -->
<table border="1" width="700" align="center" cellspacing="0" cellpadding="6">
<caption>学生信息表</caption>
<thead>
<tr align="left">
<td>姓名</td>
<td>性别</td>
<td>芳龄</td>
<td>班级</td>
<td>备注</td>
</tr>
</thead>
<tbody id="container">
<!--//todo 表格内容使用模板渲染 -->
<script type="text/x-handlebars-template" id="template">
{{#each this}}
<tr align="left">
<td>{{name}}</td>
<td>{{gender}}</td>
<td>{{age}}</td>
<td>{{classes}}</td>
<td>{{note}}</td>
</tr>
{{/each}}
</script>
</tbody>
</table>
<script src="./js/handlebars.js"></script>
<script>
var student = [
{name: '鲁班七号', gender: '未知', age: '20', classes: '一年级射手班', note: '智商二百五的电玩小子,biubiubiu,就是腿短!'},
{name: '安琪拉', gender: '女', age: '18', classes: '一年级法师班', note: '什么什么魔法书!'},
{name: '程咬金', gender: '男', age: '30', classes: '一年级二班', note: '爱与正义之斧,偷偷推到'},
{name: '阿珂', gender: '女', age: '19', classes: '三年级刺客班', note: '哪里亮了点哪里,都是我的人头!'},
{name: '李白', gender: '男', age: '20', classes: '一年级酒酒仙班', note: '但愿长醉不愿醒,我是来无影去无踪,帅!'},
{name: '森瑶', gender: '女', age: '20', classes: '皮肤班级', note: '不然梦会碎还是破!'}
]
//获取需要放数据的容器
var container = document.querySelector('#container');
//也就是获取我们定义的模板的dom对象。主要是想获取里面的内容(innerHTML)
var templateDom = document.querySelector('#template');
//编译模板的里的内容
var template = Handlebars.compile(templateDom.innerHTML);
//把后台获取到的数据student渲染到页面
container.innerHTML = template(student);
</script>
</body>
</html>
如何优雅的把后台数据(通常是JSON)轻松渲染到html页面的更多相关文章
- 用ajax获取后台数据,返回json数据,怎么在前台使用?
用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...
- 在ssm框架中前后台数据交互均使用json格式
前后台数据交互均使用json. 框架ssm(spring+springmvc+mybatis) @RequestBody注解实现接收http请求的json数据,将json数据转换为java对象,注解加 ...
- --@angularJS--$http服务与后台数据交互
1.httpBasic.html: <!DOCTYPE HTML><html ng-app="app"><head> <title& ...
- Echarts 获取后台数据 使用后台数据展示 柱形图
后台数据要以json格式返回 页面:引用echarts.js , 然后data以ajax的数据请求并返回 <%@ page language="java" import=&q ...
- 在Vue中由后台数据循环生成多选框CheckBox时的注意事项
多选框是一种非常常见的功能,有时候我们会根据后台返回的数据进行多选框渲染,之前做项目时遇到循环生成多选框时,v-model绑定的值会随着选中与取消改变,但页面却不会变化 的情况,后来测试了一下,发现多 ...
- python框架Django使用xadmin管理后台数据
Django使用xadmin管理后台数据 关注公众号"轻松学编程"了解更多. 作用:xadmin比Django内置的admin更美观.更方便. 一.导入xadmin(第三方库) 方 ...
- ajax提交数据到java后台,并且返回json格式数据前台接收处理值
1.前台html页面.有一段代码如下: 账 户: <input type="text" name="userName" id="userN& ...
- AFNetworking 与 gbk 编码格式后台数据的使用
仅针,后台数据为GBK编码时的AFNetWorking 使用情况: 1. Request failed: unacceptable content-type: text/html soluti ...
- 关于用bootstrap显示查询的后台数据
PrintWriter pw = response.getWriter(); pw.println(sb); pw.flush(); 由于用bootstrap查询数据,页面需要自身返回bootstra ...
随机推荐
- 【转】HeadFirst 组合模式+迭代器错误原因以及解决代码
http://blog.csdn.net/sugar_girl/article/details/53400267 <HeadFirst JAVA设计模式>中用迭代器迭代组合模式是存 ...
- JAVA单例模式的几种写法
/** * 单例模式懒汉式(双重检锁线程安全.JDK1.5之后) */ public class Singleton { private static volatile Singleton singl ...
- 吴裕雄--天生自然python学习笔记:python爬虫PM2.5 实时监测显示器
PM2.5 对人体的健康影响很大,所以空气中的 PM2.5 实时信息受到越来越多的关注. Python 的 Pandas 套件不但可以自动读取网页中的表格 数据 , 还可对数据进行修改.排序等处理,也 ...
- 数字签名和数字证书等openssl加密基本术语
openssl 算法基础 1.1 对称算法 : 密钥相同,加密解密使用同一密钥 1.2 摘要算法:无论用户输入的数据什么长度,输出的都是固定长度的密文:即信息摘要,可用于判断数据的完整性:目前常用的有 ...
- UVALive 3835:Highway(贪心 Grade D)
VJ题目链接 题意:平面上有n个点,在x轴上放一些点,使得平面上所有点都能找到某个x轴上的点,使得他们的距离小于d.求最少放几个点. 思路:以点为中心作半径为d的圆,交x轴为一个线段.问题转换成用最少 ...
- flink测试用例编写
使用tableFunction的collect总是npe, 实际可以自定义collector, 在collector中做自己想做的事 不使用现成的collector
- [LC] 243. Shortest Word Distance
Given a list of words and two words word1 and word2, return the shortest distance between these two ...
- win10安装revit失败,怎么强力卸载删除注册表并重新安装
一些搞设计的朋友在win10系统下安装revit失败或提示已安装,也有时候想重新安装revit的时候会出现本电脑windows系统已安装revit,你要是不留意直接安装revit,只会安装revit的 ...
- JSP Connect Database
JDBC简介 在Java技术中,访问数据库的技术叫做JDBC,它提供了一系列的API,让Java语言编写的代码连接数据库,对数据库进行添加.删除.修改和查询. JDBC相关的API存在java.sql ...
- Future 异步多线程
进来接手一个任务,需要做异步多线程数据源调用,数据源的配置和使用请阅读相关文章: https://www.cnblogs.com/haoliyou/p/9604452.html 配置好数据源后,实质上 ...