在我们实际的开发过程中,可能会遇到使用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. redis 主从复制详解

    引言 我们之前操作 Redis 都是单机版,但是实际应用中没人使用单机版,都是搭建集群的方式.这篇文章要介绍的主从复制,是指将一台 Redis 服务器的数据,复制到其他 Redis 服务器,我们将前者 ...

  2. 内核软中断之tasklet机制

    1. 软中断IRQ简介 软中断(SoftIRQ)是内核提供的一种基于中断的延时机制, Linux内核定义的软中断有以下几种: enum { HI_SOFTIRQ=0, /*高优先级的tasklet*/ ...

  3. python库--requests

    requests 方法 返回 参数 方法详情 .get()  r  url  get请求 params  url?后面的内容会以'key=value'的方式接到url后面 proxies 设置代理ip ...

  4. Apache配置与应用

    目录: 一.基于域名的虚拟主机 二.基于IP地址的虚拟主机 三.基于端口的虚拟主机 四.Apache连接保持 五.构建Web虚拟目录与用户授权限制 六.Apache日志分割 七.AWStats 分析系 ...

  5. Dockerfile自动制作Docker镜像(二)—— 其它常用命令

    Dockerfile自动制作Docker镜像(二)-- 其它常用命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:Dockerf ...

  6. 论文解读(PCL)《Prototypical Contrastive Learning of Unsupervised Representations》

    论文标题:Prototypical Contrastive Learning of Unsupervised Representations 论文方向:图像领域,提出原型对比学习,效果远超MoCo和S ...

  7. 解决vscode可以编译通过c++项目,但头文件有红色波浪线的问题

    解决vscode可以编译通过c++项目,但头文件有红色波浪线的问题 一.问题描述 我是在Ubuntu 16.04的环境下,用vscode写代码的,一般不使用vscode自带的编译环境,而是用cmake ...

  8. ESP8266- 使用AT指令获取网络时间

    前言:很早就考虑过用 ESP8266 获取网络时间,以前都是用 ESP8266 刷机智云的 Gagent 固件,但无奈现在手头的 ESP-01 的 Flash 只有 1M,实在无法胜任.经过在网络上的 ...

  9. IDL读取fits文件

    使用mrdfits函数 这是天文学标准库中的函数,下载地址:https://idlastro.gsfc.nasa.gov/homepage.html,下载后,将pro文件夹导入到IDL工程中. str ...

  10. P5325-[模板]Min_25筛

    正题 题目链接:https://www.luogu.com.cn/problem/P5325 题目大意 定义一个积性函数满足\(f(p^k)=p^k(p^k-1)\) 求\(\sum_{i=1}^nf ...