在我们实际的开发过程中,可能会遇到使用ajax去后台获取一堆的数据,然后动态的渲染到页面上。比如:去后台获取一个list集合,然后将数据以表格的形式展示在页面上。另外一种可能发生的情况就是页面上需要批量增加数据信息等等。如果我们前台使用html动态的拼接的话,不利于后期的维护,而且也不利于阅读。因此就需要一个前台模板引擎帮我们解决这个问题。

laytpl是一个前端模板引擎,可以解决我们上面遇到的问题,并且使用简单,开发方便,模板渲染的效率也高。

laytpl官方网址: http://laytpl.layui.com/

一、laytpl的语法简单使用:

{{ d.field }} 输出文本,不转义html
{{= d.field }} 输出文本,转义html
{{# if(条件){ }} ...{{# }else{ }}...{{# } }} if else的写法
{{# for(循环的内容) { }}....{{# } }} for循环的写法

二、基于上方语法的一个小例子

代码示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>基本使用</title>
<script type="text/javascript" src="../js/laytpl.js"></script>
</head>
<body>
<!-- 1.编写模板 -->
<script type="text/html" id="template">
<h3> hello {{ d.world }} </h3>
<h3> 你好: {{= d.redWorld }} </h3>
<h3> if条件的使用 {{# if(d.sex=='0') {}} 男 {{# }else { }} 女 {{# } }}</h3>
<h3> for循环的使用: </h3>
<ul>
{{# var num = 1;}}
{{# for(var i=0;i<d.datas.length;i++){}}
<li> {{d.datas[i].title}} -- {{num++}}</li>
{{#}}}
</ul>
</script> <!-- 2.定义输出的视图 -->
<div id="outputView"></div> <!-- 3.渲染模版 -->
<script type="text/javascript">
var data = {
world : '<span style="color:red"> word </span>',
redWorld : '<span style="color:red"> word </span>',
sex : '1',
datas : [{title:'文章一'},{title:'文章二'},{title:'文章三'},{title:'文章四'}]
};
laytpl(getById('template').innerHTML).render(data, function(html){
getById('outputView').innerHTML = html;
}); function getById(id){
return document.getElementById(id);
}
</script>
</body>
</html>

输出结果:
   

三、实现一个动态增加行和删除行的例子(模拟页面上的批量增加数据的操作)

     代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>基本使用</title>
<script type="text/javascript" src="../js/laytpl.js"></script>
<style type="text/css">table,tr,td,th,thead,tbody{border-collapse: collapse;}</style>
</head>
<body>
<!-- 1.编写模板 -->
<script type="text/html" id="template">
<tr>
<td> <input type="text" name="username"/> </td>
<td> 男:<input type="radio" name="sex" value="0"/> 女:<input type="radio" name="sex" value="1"/> </td>
<td> <input type="text" name="age" value="{{d.age}}"/> </td>
<td> <input type="button" value=" + " onclick="add(this)" /> <input type="button" value=" - " onclick="removeTr(this)" /> </td>
</tr>
</script>
<!-- 2.定义输出的视图 -->
<table border="1">
<thead>
<tr>
<th>用户名</th>
<th>性别</th>
<th>年龄</th>
<th>操作</th>
</tr>
</thead>
<tbody id="outputView">
</tbody>
</table>
<!-- 3.渲染模版 -->
<script type="text/javascript">
function loadTemplate(age){
laytpl(getById('template').innerHTML).render({ age : age || 20 }, function(html){
getById('outputView').innerHTML += html;
});
}
loadTemplate();
function add($this){
loadTemplate( Math.round(Math.random()*100) );
}
function removeTr($this){
$this.parentNode.parentNode.remove();
}
function getById(id){
return document.getElementById(id);
}
</script>
</body>
</html>

   效果:
  

js模板引擎laytpl的使用的更多相关文章

  1. laytpl js模板引擎

    laytpl js模板引擎.laytpl是一款非常轻量的JavaScript模板引擎.地址:http://www.layui.com/laytpl/ 用法与handlebar.js类似,但是比较轻量级 ...

  2. doT js 模板引擎【初探】要优雅不要污

    js中拼接html,总是感觉不够优雅,本着要优雅不要污,决定尝试js模板引擎. JavaScript 模板引擎 JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注. ...

  3. 各种JS模板引擎对比数据(高性能JavaScript模板引擎)

    最近做了JS模板引擎测试,拿各个JS模板引擎在不同浏览器上去运行同一程序,下面是模板引擎测试数据:通过测试artTemplate.juicer与doT引擎模板整体性能要有绝对优势: js模板引擎 Ja ...

  4. JS 模板引擎 BaiduTemplate 和 ArtTemplate 对比及应用

    最近做项目用了JS模板引擎渲染HTML,JS模板引擎是在去年做项目是了解到的,但一直没有用,只停留在了解层面,直到这次做项目才用到,JS模板引擎用了两个 BaiduTemplate 和 ArtTemp ...

  5. 掌握js模板引擎

    最近要做一个小项目,不管是使用angularjs还是reactjs,都觉得大材小用了.其实我可能只需要引入一个jquery,但想到jquery对dom的操作,对于早已习惯了双向绑定模式的我,何尝不是一 ...

  6. js模板引擎

    js模板引擎包括如下: template 官方参考:http://aui.github.io/artTemplate BaiduTemplate 官方参考:http://baidufe.github. ...

  7. 调研js模板引擎

    js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...

  8. js模板引擎介绍搜集

    js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...

  9. Filter - Surge.js模板引擎过滤器

    版权所有,转载请注明出处:http://guangboo.org/2014/01/05/filter-surgejs-template-engine 过滤器在surge.js模板引擎中多处用到,其类似 ...

随机推荐

  1. Linux 动态库的编译和使用

    1. 动态链接库简介 动态库又叫动态链接库,是程序运行的时候加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序.动态库是目标文件的集合,目标文件在动态库中的组织方式是按特殊的方式组 ...

  2. C# Dapper基本三层架构使用 (三、BLL)

    BLL层介绍 业务逻辑层用于做一些有效性验证的工作,以更好的保证程序运行的健壮性.如完成数据添加.修改和查询业务等:不允许指定的文本框中输入空字符串,数据格式是否正确以及数据类型验证:用户权限的合法性 ...

  3. CodeForce-797C Minimal string(贪心模拟)

    Minimal string CodeForces - 797C Petya 收到一个长度不超过 105 的字符串 s.他拿了两个额外的空字符串 t 和 u 并决定玩一个游戏.这个游戏有两种合法操作: ...

  4. 自己实现一个Controller——终极型

    经过前两篇的学习与实操,也大致掌握了一个k8s资源的Controller写法了,如有不熟,可回顾 自己实现一个Controller--标准型 自己实现一个Controller--精简型 但是目前也只能 ...

  5. PHP中的PDO操作学习(三)预处理类及绑定数据

    要说 PDO 中最强大的功能,除了为不同的数据库提供了统一的接口之外,更重要的就是它的预处理能力,也就是 PDOStatement 所提供的功能.因为它的存在,才让我们可以安心地去使用而不用操心 SQ ...

  6. 微信小程序view不能换行 text实现转义换行符

    在html中可以直接使用<br />换行,但是小程序wxml中使用<br />无效,可以换成\n Page({ data: { title: '至少5个字\n请多说些感受吧' ...

  7. PHP获取当前网址路径

    $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] // 获取来源 function ...

  8. (转载)Select for update/lock in share mode 对事务并发性影响

    select for update/lock in share mode 对事务并发性影响 事务并发性理解 事务并发性,粗略的理解就是单位时间内能够执行的事务数量,常见的单位是 TPS( transa ...

  9. Linux系列(41) - 监听命令Vmstart,Top(还需完善)

    一.简介 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控:属于sysstat包:它是对系统的整体情况进行统计 ...

  10. div居中和垂直居中的最简单方法

    div居中方法: 1)对父盒子添加 text-align="center": 2)子盒子添加 margin:0 auto; 例子: body{text-align:center} ...