laytpl是一款非常轻量的JavaScript模板引擎,性能也还可以。使用 JavaScript模板引擎 会让我们的页面渲染更加的高效和便捷。

来看一下,传统的方式如何渲染页面。我们在 Tools.php 中新建一个 方法 template

~~~

// 模板渲染接口

public function template()

{

if(request()->isAjax()){

$cards =[

['code' => 'A', 'name' => '南京'],

['code' => 'B', 'name' => '无锡'],

['code' => 'C', 'name' => '徐州'],

['code' => 'D', 'name' => '常州'],

['code' => 'E', 'name' => '苏州'],

['code' => 'F', 'name' => '南通'],

['code' => 'G', 'name' => '连云港'],

['code' => 'H', 'name' => '淮安'],

['code' => 'J', 'name' => '盐城'],

['code' => 'K', 'name' => '扬州'],

['code' => 'L', 'name' => '镇江'],

['code' => 'M', 'name' => '泰州'],

['code' => 'N', 'name' => '宿迁']

];

return json(['code' => 1, 'data' => $cards, 'msg' => '江苏各市车牌号']);

}

return $this->fetch();

}

~~~

然后我们在 view\\tools 中新建一个 template.html

~~~

传统方式渲染页面

$(function(){

$.getJSON("{:url('tools/template')}", function(res){

var _html = '';

$("#title").text(res.msg);

$.each(res.data, function(k, v){

`_html += '

车牌: 苏' + v.code + ', 城市: ' + v.name;`

});

$("#content").html(_html);

});

});

~~~

然后我们访问[http://www.phper.com/index/tools/template](http://www.phper.com/index/tools/template)可见,这样的页面。

江苏各市车牌号

* 车牌: 苏A, 城市: 南京

* 车牌: 苏B, 城市: 无锡

* 车牌: 苏C, 城市: 徐州

* 车牌: 苏D, 城市: 常州

* 车牌: 苏E, 城市: 苏州

* 车牌: 苏F, 城市: 南通

* 车牌: 苏G, 城市: 连云港

* 车牌: 苏H, 城市: 淮安

* 车牌: 苏J, 城市: 盐城

* 车牌: 苏K, 城市: 扬州

* 车牌: 苏L, 城市: 镇江

* 车牌: 苏M, 城市: 泰州

* 车牌: 苏N, 城市: 宿迁

相信很多人都是这么取处理 返回的 json 数据的。显然本案例展示的结构很简单,一个 li 标签就可以了。实际的工作中,可能会遇到比这复杂 N倍 的dom结构。我们还是按照这样的

~~~

_html += '

车牌: 苏' + v.code + ', 城市: ' + v.name;

~~~

拼装方式,会随着结构复杂度的上升,而使我们的代码拼接难度上升,容易出错。如果后期我们要在这个结构上添加一些标签,比如我要在 li 标签内添加一个 span 标签等结构时候,由于我们拼接的是字符串,对我们的维护也造成了很大的麻烦。那么,我们来看一下,通过 laytpl 如何解决这个实际问题。

## 下载 laytpl

同样的,进入 laytpl 官网[laytpl 官网](http://www.layui.com/laytpl/),点击下载。解压出一个 laytpl 的文件夹,把他放到 static 下面。

![](https://box.kancloud.cn/246a809cc52266387b2fd71b420767ca_220x148.jpg)

## 如何去使用它

接口依旧是访问 template ,因此我直接在 template.html 中添加测试代码进行展示。

~~~

{{ d.msg }}

{{# for(var i = 0, len = d.data.length; i < len; i++){ }}

车牌: 苏{{ d.data[i].code }}, 城市: {{ d.data[i].name }}

{{# } }}

~~~

渲染到页面中的数据,需要一个容器。因此,我在 页面加了一个 div 来放这些数据。

~~~

~~~

然后给我们需要渲染的模板 加上一个包住模板 html

~~~

~~~

被这个标签包住的 html 不会被直接解析。注意这个 id 的标识,不同的 模板起一个 有意义的 id 名称来识别。模板中的变量用

~~~

{{ }}

~~~

来标识就可以了。里面的变量的写法,依旧是 js 的语法。让我们来看看,如何传入需要渲染的数据

~~~

$(function(){

$.getJSON("{:url('tools/template')}", function(res){

var _html = '';

$("#title").text(res.msg);

$.each(res.data, function(k, v){

_html += '

车牌: 苏' + v.code + ', 城市: ' + v.name;

});

$("#content").html(_html);

// 通过 laytpl 进行渲染

var gettpl = document.getElementById('demo').innerHTML;

laytpl(gettpl).render(res, function(html){

document.getElementById('view').innerHTML = html;

});

});

~~~

我们直接把 返回的数据 res 通过 laytpl 进行渲染即可。 template.html 完整代码如下:

~~~

传统方式渲染页面

{{ d.msg }}

{{# for(var i = 0, len = d.data.length; i < len; i++){ }}

车牌: 苏{{ d.data[i].code }}, 城市: {{ d.data[i].name }}

{{# } }}

$(function(){

$.getJSON("{:url('tools/template')}", function(res){

var _html = '';

$("#title").text(res.msg);

$.each(res.data, function(k, v){

_html += '

车牌: 苏' + v.code + ', 城市: ' + v.name;

});

$("#content").html(_html);

// 通过 laytpl 进行渲染

var gettpl = document.getElementById('demo').innerHTML;

laytpl(gettpl).render(res, function(html){

document.getElementById('view').innerHTML = html;

});

});

});

~~~

效果如下:

![](https://box.kancloud.cn/b3146cc2437f28a6c9b9d47a283cb55a_499x637.jpg)

laytpl语法_ThinkPHP5使用laytpl实现前后端分离相关推荐

  1. SpringBoot+LayUI+MybatisPlus 前后端分离 实现排名统计功能

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java快一年时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 首先给各位粉丝朋友 ...

  2. 移动端开发者眼中的前端开发流程变迁与前后端分离

    写在最开始 这是一篇面向移动端开发者的科普性文章,从前端开发的最初流程开始,结合示范代码,讨论开发流程的演变过程,希望能覆盖一部分前端开发技术栈,从而对前端开发的相关概念形成初步的认识. 本文会提供一 ...

  3. Spring Boot + Vue.js 实现前后端分离(附源码)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者: 梁小生0101 链接:juejin.im/post/5c6 ...

  4. 为什么一定要前后端分离?

    作者 孤独烟,中国平安研发工程师,目前负责云平台架构设计以及需求研发工作.毕业后一直从事Java开发工作,在Web开发.架构设计上有多年的实战经验.在MySQL性能优化.JVM调优.分布式领域有着丰富 ...

  5. 前后端分离后的前端时代

    什么是前后端分离,要区分前端和后端,需要有个明确的界限.一般,用户可以直接看到的东西,都是属于前端的范畴,除了前端之外都属于后端了. 在传统的像ASP,JSP和PHP等开发模式中,前端是处在一个混沌的 ...

  6. easyui框架前后端交互_Vue+ElementUI+.netcore前后端分离框架开发项目实战

    点击上方"前端教程",选择"星标" 每天前端开发干货第一时间送达! 转自:我心依旧.cnblogs.com/-clouds/p/11633786.html 框架 ...

  7. 记一次Spring boot 和Vue的前后端分离的入门培训

    记一次Spring boot 和Vue的前后端分离的入门培训 由于公司之前是写C#的,现在要转 Java分布式 + vue,所以进行一次前后端的简单培训. 前端工具和环境: Node.js V10.1 ...

  8. Spring Boot2.x-13前后端分离的跨域问题解决方法之Nginx

    文章目录 概述 浏览器同源策略 后台搭建 pom.xml interceptor 配置 Controller 启动测试 浏览器和session 后端工程发布到服务器上 问题复现 通过Nginx反向代理 ...

  9. 基于VUE只是作为模版引擎的前后端分离

    首先请原谅本文标题取的有点大,但并非为了哗众取宠.本文取这个标题主要有3个原因,这也是写作本文的初衷: (1)目前国内几乎搜索不到全面讲解如何搭建前后端分离框架的文章,讲前后端分离框架思想的就更少了, ...

最新文章

  1. 数据库中的datatime的长度怎么设定_软件测试必备之数据库知识(一)
  2. python编程入门t-python高级编程——入门语法(一)
  3. gpio 树莓派3a+_树莓派4正式发布!硬件性能大提升:CPU提升3倍,支持USB3.0、蓝牙5.0、千兆以太网、4G LPDDR4、H.265...
  4. 数据结构——图-有向带权图的邻接表基础
  5. 计算机社团竞选优势6,社团社长竞选稿六篇
  6. 视觉检测无脊椎机器人或vipir_深入浅出人工智能前沿技术—机器视觉检测,看清人类智慧工业...
  7. 《统计学习方法》P179页10.22前向后向算法公式推导
  8. (转)知乎:维度灾难
  9. 用 m3u8 下载网页视频直接保存为 MP4
  10. 漫谈敏捷方法中的信任
  11. cocos creator 发布IOS版本(一)从零开始,Xcode:12.0
  12. Groundhog and 2-Power Representation
  13. 12306网站服务器时间限制,12306网上订票时间限制
  14. 前端技巧培训-后台战友快速入门
  15. 使用Pandas的read_html方法读取网页Table表格数据
  16. 数据挖掘学习之认识数据
  17. 使用windows钩子捕获进程的启动和关闭消息
  18. 在腾讯实习的五个月的一些思考与收获
  19. PyCharm easygui
  20. WSL2中使用VcXsrv实现xfce4图形界面

热门文章

  1. c语言打印qword类型,c/c++开发分享c语言中数据类型BYTE,WORD和DWORD的格式说明符?...
  2. VHD和VHDX文件压缩
  3. 欧科云链研究院:当硅谷银行闪崩,稳定币也难以“稳定”
  4. 关于USB通信中使用libusb的心得 (主要是针对VID PID相同的情况下的处理)
  5. 0827 - 踏实做事,心里才踏实
  6. C语言数组的动态分配内存和静态分配内存
  7. java crc8_java实现 CRC8 校验 多项式 x8+x2+x+1
  8. javascript测试三种字符串替换方式效率
  9. Scrapy框架—— 带cookies登录
  10. 命令行操纵oracle数据库大全