《Layui宇宙版教程》提供2000人的QQ群进行交流学习,QQ群号:1046961650,或通过手机QQ扫描二维码进入:

1.22 模板引擎laytpl

laytpl是JavaScript模板引擎,在字符解析上有着比较出色的表现,欠缺之处在于异常调试上。

模块加载名称:laytpl。

在线调试:

http://www.layui.com/demo/laytpl.html

1.22.1 模板的快速使用

与一般的字符拼接不同的是,laytpl模板可与数据分离,集中把逻辑处理放在View层,提升代码可维护性,尤其是针对大量模板渲染的情况。

测试代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<script src="js/jquery3.5.1.js"></script>

<link rel="stylesheet" href="layui/css/layui.css" />

<script src="layui/layui.all.js"></script>

</head>

<body>

<script>

var laytpl = layui.laytpl;

//直接解析字符

laytpl('{{ d.name }}是一位公猿').render({

name: '贤心'

}, function(string) {

console.log(string); //贤心是一位公猿

});

//也可以采用下述同步写法,将render方法的回调函数剔除,可直接返回渲染好的字符

var string = laytpl('{{ d.name }}是一位公猿').render({

name: '贤心'

});

console.log(string); //贤心是一位公猿

//如果模板较大,你也可以采用数据的写法,这样会比较直观一些

var string = laytpl([

'{{ d.name }}是一位公猿', '其它字符 {{ d.content }}  其它字符'

].join('')).render({

name: '贤心',

content: 'xyz',

});

console.log(string); //贤心是一位公猿

</script>

</body>

</html>

运行效果如图1-xx所示。

1.22.2 可以将模板存储在页面或其它任意位置

测试代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<script src="js/jquery3.5.1.js"></script>

<link rel="stylesheet" href="layui/css/layui.css" />

<script src="layui/layui.all.js"></script>

</head>

<body>

<!--第一步:编写模版。可以使用一个<script>标签存放模板,示例代码:-->

<script id="demo" type="text/html">

<h3>{{ d.title }}</h3>

<ul>

{{# layui.each(d.list, function(index, item){ }}

<li>

<span>{{ item.modname }}</span>

<span>{{ item.alias }}</span>

<span>{{ item.site || 'site为空' }}</span>

</li>

{{# }); }}

{{# if(d.list.length === 0){ }}

无数据

{{# } }}

</ul>

</script>

<!--第二步:建立视图。用于呈现渲染结果。-->

<div id="view"></div>

<!--第三步:渲染模版-->

<script>

var laytpl = layui.laytpl;

var data = { //数据

"title": "Layui常用模块",

"list": [{

"modname": "弹层",

"alias": "layer",

"site": "layer.layui.com"

}, {

"modname": "表单",

"alias": "form"

}]

}

var getTpl = demo.innerHTML;

var view = document.getElementById('view');

laytpl(getTpl).render(data, function(html) {

view.innerHTML = html;

});

</script>

</body>

</html>

以上代码的执行过程为:data+laytpl模板=最终的html代码。

运行效果如图1-xx所示。

1.22.3 模版语法

模板语法如图1-xx所示。

1.22.3.1 转义{{ d.field }}

测试代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<script src="js/jquery3.5.1.js"></script>

<link rel="stylesheet" href="layui/css/layui.css" />

<script src="layui/layui.all.js"></script>

</head>

<body>

<!--第一步:编写模版。可以使用一个<script>标签存放模板,示例代码:-->

<script id="demo" type="text/html">

<div>

{{ d.htmlCode }}

</div>

</script>

<!--第二步:建立视图。用于呈现渲染结果。-->

<div id="view"></div>

<!--第三步:渲染模版-->

<script>

var laytpl = layui.laytpl;

var data = { //数据

"htmlCode": "<input type='button' value='添加'/>"

}

var getTpl = demo.innerHTML;

var view = document.getElementById('view');

laytpl(getTpl).render(data, function(html) {

view.innerHTML = html;

});

</script>

</body>

</html>

运行效果如图1-xx所示。

1.22.3.2 不转义{{= d.field }}

测试代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<script src="js/jquery3.5.1.js"></script>

<link rel="stylesheet" href="layui/css/layui.css" />

<script src="layui/layui.all.js"></script>

</head>

<body>

<!--第一步:编写模版。可以使用一个<script>标签存放模板,示例代码:-->

<script id="demo" type="text/html">

<div>

{{=d.htmlCode}}

</div>

</script>

<!--第二步:建立视图。用于呈现渲染结果。-->

<div id="view"></div>

<!--第三步:渲染模版-->

<script>

var laytpl = layui.laytpl;

var data = { //数据

"htmlCode": "<input type='button' value='添加'/>"

}

var getTpl = demo.innerHTML;

var view = document.getElementById('view');

laytpl(getTpl).render(data, function(html) {

view.innerHTML = html;

});

</script>

</body>

</html>

运行效果如图1-xx所示。

1.22.3.3 {{# JavaScript表达式 }}

测试代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<script src="js/jquery3.5.1.js"></script>

<link rel="stylesheet" href="layui/css/layui.css" />

<script src="layui/layui.all.js"></script>

</head>

<body>

<!--第一步:编写模版。可以使用一个<script>标签存放模板,示例代码:-->

<script id="demo" type="text/html">

{{#

var fn = function(){

return '2020-1-1';

};

}}

{{#  if(true){ }}

开始日期:{{ fn() }}

{{#  } else { }}

已截止

{{#  } }}

</script>

<!--第二步:建立视图。用于呈现渲染结果。-->

<div id="view"></div>

<!--第三步:渲染模版-->

<script>

var laytpl = layui.laytpl;

var getTpl = demo.innerHTML;

var data = {};

var view = document.getElementById('view');

laytpl(getTpl).render(data, function(html) {

view.innerHTML = html;

});

</script>

</body>

</html>

运行效果如图1-xx所示。

1.22.3.4 {{! template !}}忽略模板代码

测试代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<script src="js/jquery3.5.1.js"></script>

<link rel="stylesheet" href="layui/css/layui.css" />

<script src="layui/layui.all.js"></script>

</head>

<body>

<!--第一步:编写模版。可以使用一个<script>标签存放模板,示例代码:-->

<script id="demo" type="text/html">

{{! d.username !}}

<br/>

{{ d.password }}

</script>

<!--第二步:建立视图。用于呈现渲染结果。-->

<div id="view"></div>

<!--第三步:渲染模版-->

<script>

var laytpl = layui.laytpl;

var getTpl = demo.innerHTML;

var data = {

"usernane": "账号",

"password": "密码"

};

var view = document.getElementById('view');

laytpl(getTpl).render(data, function(html) {

view.innerHTML = html;

});

</script>

</body>

</html>

运行效果如图1-xx所示。

1.22.3.5 结合for循环

测试代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<script src="js/jquery3.5.1.js"></script>

<link rel="stylesheet" href="layui/css/layui.css" />

<script src="layui/layui.all.js"></script>

</head>

<body>

<!--第一步:编写模版。可以使用一个<script>标签存放模板,示例代码:-->

<script id="demo" type="text/html">

{{#

for(var i=0;i<d.list.length;i++){ }}

{{d.list[i]}}<br/>

{{# } }}

</script>

<!--第二步:建立视图。用于呈现渲染结果。-->

<div id="view"></div>

<!--第三步:渲染模版-->

<script>

var laytpl = layui.laytpl;

var getTpl = demo.innerHTML;

var data = {

list: ['a', 'b', 'c']

};

var view = document.getElementById('view');

laytpl(getTpl).render(data, function(html) {

view.innerHTML = html;

});

</script>

</body>

</html>

运行效果如图1-xx所示。

《layui宇宙版教程》:模板引擎laytpl相关推荐

  1. 《layui宇宙版教程》:字体图标

    <Layui宇宙版教程>提供2000人的QQ群进行交流学习,QQ群号:1046961650,或通过手机QQ扫描二维码进入: 1.5 字体图标 Layui的所有图标全部采用字体形式,取材于阿 ...

  2. 《layui宇宙版教程》:扫描二维码加2000人QQ群交流学习

    Layui宇宙版教程 version1.6 <Layui宇宙版教程>提供2000人的QQ群进行交流学习,QQ群号:1046961650,或通过手机QQ扫描二维码进入: 任职公司中大部分的软 ...

  3. 《layui宇宙版教程》:日期和时间组件laydate

    <Layui宇宙版教程>提供2000人的QQ群进行交流学习,QQ群号:1046961650,或通过手机QQ扫描二维码进入: 1.19 日期和时间组件laydate 主要以年选择器.年月选择 ...

  4. 《layui宇宙版教程》:轮播组件carousel

    <Layui宇宙版教程>提供2000人的QQ群进行交流学习,QQ群号:1046961650,或通过手机QQ扫描二维码进入: 1.30 轮播组件carousel carousel主要适用于跑 ...

  5. 《layui宇宙版教程》:徽章

    <Layui宇宙版教程>提供2000人的QQ群进行交流学习,QQ群号:1046961650,或通过手机QQ扫描二维码进入: 1.14 徽章 徽章是一个修饰性的元素,它们本身细小而并不显眼, ...

  6. 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)

    前些时间在看创智博客韩顺平的Smarty模板引擎教程,再结合自己跟李炎恢第二季开发中CMS系统写的tpl模板引擎.今天就写一个迷你版的Smarty引擎,虽然说我并没有深入分析过Smarty的源码,但是 ...

  7. smarty.class.php,自定义min版smarty模板引擎MinSmarty.class.php文件及用法

    本文实例讲述了自定义的min版smarty模板引擎MinSmarty.class.php文件.分享给大家供大家参考,具体如下: 一.smarty的优点 smarty是一个使用PHP写出来的模板引擎,是 ...

  8. layui模板引擎laytpl判断为null或为空

    <script type="text/html" id="stu_nameTpl">{{# if(d.stu_name==null || d.stu ...

  9. Enjoy模板里使用layui模板引擎laytpl

    注:https://jfinal.com/share/1023

最新文章

  1. c, c++函数名编译符号修饰符说明
  2. MPB:军科院杨瑞馥、毕玉晶等-​​培养组学方法优化(视频)
  3. 深度学习很难?一文读懂深度学习!
  4. 深入理解IPyton以及Jupyter Notebook中的%time以及%timeit的作用
  5. Zabbix 2.4.5 自定义 key 监控 apache
  6. Partition分析
  7. C++ Semaphore信号量使用
  8. Python迭代文件对象
  9. ArcGIS和Fragstats的脚本化调用 ------以ArcPy和命令行的方式
  10. 数据存储的未来,磁带是赢家?!
  11. Excel如何对多分隔符号数据进行分列
  12. ibm是被联想收购了吗_联想集团收购IBM背后的苦
  13. 算法篇-用栈来求解汉诺塔问题
  14. 解决cherry pick提交报错问题
  15. 【自学Android开发(一)】
  16. 禅道mysql怎么在本地配置_本地安装部署禅道
  17. LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation【论文阅读笔记】
  18. STM32学习笔记---TFT-LCD
  19. python画简单花的代码_Python竟能画这么漂亮的花,帅呆了(代码分享)
  20. java gravity_Android属性gravity与layout_gravity的区别

热门文章

  1. 对于清北学堂2018国庆刷题班的学习总结
  2. ESXI6.5学习记录(1):VMware安装ESXI6.5全教程
  3. UXE的一些使用归纳
  4. 禁止搜狗引擎收录php动态页面,优化方案:搜搜跟搜狗好像变得更加不爱收录页面...
  5. 【Unity Shader实例】 水体WaterEffect(二) 用贴图和uv动画模拟水效
  6. hive-参数-hivevar、hiveconf
  7. Python获取文件创建时间
  8. Team Leader 带领一个团队
  9. springboot+基于微信小程序音乐播放器的设计与实现 毕业设计-附源码271156
  10. YOLOv7:无需预训练模型的最新最实时的目标检测框架