LayUI模板引擎渲染数据

这篇具有很好参考价值的文章主要介绍了LayUI模板引擎渲染数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前端模板引擎介绍

接上节Spring boot项目开发实战——(LayUI实现前后端数据交换与定义方法渲染数据)

模板引擎能简化开发,极大提高效率,小编之前使用过JSP和Thymeleaf,以及python的jinja2,这些是后端的模板引擎,数据的渲染都需要借助服务器,对html重新解析,在特定标识符处填入数据。

Node第一次把JavaScript带入到后端服务器开发,js也成为后端大家族的一员,前端模板就是基于js的,模板基于js解析器使逻辑和数据之间更加清晰。

模板引擎文档 - layui.laytpl

LayUI模板引擎渲染数据

占位符只起一个填充数据的作用,关键还是模板的函数:

如果模版默认的 {{ }} 分隔符与你的其它模板(一般是服务端模板)存在冲突,你也可以重新定义分隔符

laytpl.config({
  open: '<%',
  close: '%>'
});

使用模板引擎需要用script标签包裹起来,并为script标签添加id="demo" type="text/html"属性声明该段需要为模板语法。

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

使用script包裹有两个意义:

  1. 使用script标签包裹的html内部可以使用js语法,类似于java jsp中时使用<%-----%>包裹的部分可以是使用java代码一样;
  2. 为被包裹的部分起别名便由获取静态html;
  3. 声明script内部有模板语法需要特殊解析。

使用步骤

  • 导入模板引擎模块
 layui.use(['layer','laytpl'], function () {
         layer = layui.layer,
         laytpl = layui.laytpl;
});
  • 编写重解析页面和显示区域
<script id="demo" type="text/html">
	<div>{{d.title}}</div>
</script>
<div id="sentence"></div>

注意这里容易忽视,首先用<script>标签包裹的为冲解析页面,前端模板引擎比后端模板引擎解析复杂一些,原因在于js既是浏览器解析语言又是后端解析语言,所以需要区分,这里layui的实现方案使主动获取需要解析的部分传入模板引擎,回调函数得到页面文件。

简单来说,就是后端引擎能直接识别占位符模板语法,而js需要标注模板语法,并将解析模板传入模板引擎得到最终页面,因此该过程也是异步任务。

因此上面需要定义两个模板,一个是待解析模板,一个使最终显示模板。

  • 获取待带解析模板传入数值返回最终页面
layui.use(['layer','jquery','laytpl'], function () {
    var $ = layui.$,   //jQuery复制
        layer = layui.layer,
        laytpl = layui.laytpl;
		//定义数据
		var data = {"title":"layui模板引擎的测试!"}
		
		//获取待解析模板
		let tpl = demo.innerHTML
		//获取显示区域
		let view = document.getElementById("sentence")
		//将带解析模板和数据传入laytpl模板引擎,返回最终页面html
		laytpl(tpl).render(data,function(html){
		//将返回的html通过DOM操作赋值给显示区域
		view.innerHTML = html
	})
});

核心部分:

//定义数据(数据可以后端获取)
var data = {"title":"layui模板引擎的测试!"}

//获取待解析模板
let tpl = demo.innerHTML
//获取显示区域
let view = document.getElementById("sentence")
//将带解析模板和数据传入laytpl模板引擎,返回最终页面html
laytpl(tpl).render(data,function(html){
//将返回的html通过DOM操作赋值给显示区域
view.innerHTML = html

LayUI模板引擎渲染数据
到此已经可以渲染数据了,另外需要注意的有一下几点:

  1. <div>{{d.title}}</div>占位符中的d全局未定义却可以使用,因为这是固定写法,所有模板处传入的data都会直接赋值给d。例如:
//对象定义
var data = {"title":"layui模板引擎的测试!"}

//数组定义
var data = [1,2,3,4,5]

LayUI模板引擎渲染数据
LayUI模板引擎渲染数据

  1. 待解析的模板可以为空,显示模板一定要存在

带解析模板为空只会什么也不显示,但是模板为空或不存在会报错。
LayUI模板引擎渲染数据
3. script标签包裹的html不会显示其本身内容,也不影响布局,起css样式会在最终显示模板展现。

模板使用最多的应该是循环渲染数据和分支,layui模板的循环使用layui.each方法,分支为if

layui模板分支和循环

后端接收数据并使用模板填充数据

场景介绍:js通过DOM想html中添加数据,但数据很多时DOM操作繁琐,对于有些数据,结构一致,动态赋值有规律可寻,如下图:

LayUI模板引擎渲染数据
每一行都包含一个字符串和时间。

<!--原始数据-->
 <div class="layuimini-notice">
     <div class="layuimini-notice-title" id="title">_xiao_</div>
     <div class="layuimini-notice-extra">2019-07-11 12:57</div>
 </div>
 <div class="layuimini-notice">
     <div class="layuimini-notice-title">_xiao_</div>
     <div class="layuimini-notice-extra">2019-07-11 12:57</div>
 </div>
 <div class="layuimini-notice">
     <div class="layuimini-notice-title">_xiao_</div>
     <div class="layuimini-notice-extra">2019-07-05 14:28</div>
 </div>
 <div class="layuimini-notice">
     <div class="layuimini-notice-title">_xiao_</div>
     <div class="layuimini-notice-extra">2019-07-04 11:02</div>
 </div>
 <div class="layuimini-notice">
     <div class="layuimini-notice-title">_xiao_</div>
     <div class="layuimini-notice-extra">2019-07-05 14:28</div>
 </div> 

获取后台数据:

//定义ajax获取后台数据
function newsData(){
    $.ajax({
        type: "GET",
        url: "http://localhost:8080/product/newRecord",
        data: null,
        dataType: "json",
        success: function (data) {
            console.log(data)
            //updateSaleData(data)
        }
    });
}

//定义前端模板重解析方法
//最近消费记录
function getTpl(data){
    let tpl = demo.innerHTML
    let view = document.getElementById("sentence")
    laytpl(tpl).render(data,function(html){
    view.innerHTML = html
    })
}

由于ajax和模板引擎都是异步任务,也不知道谁先执行,只能通过调用的方式使用。

回显数据
LayUI模板引擎渲染数据
根据回显的数据构造显示模板:
LayUI模板引擎渲染数据

<script id="news" type="text/html">
    {{#  layui.each(d, function(index, item){ }}
    <div class="layuimini-notice">
        <div class="layuimini-notice-title" id="title">{{item.sentence}}</div>
        <div class="layuimini-notice-extra">{{ item.time }}</div>
    </div>
    {{#  }); }}
</script> 
<div id="view"></div> 

LayUI模板引擎渲染数据

模板引擎完整小案例:文章来源地址https://www.toymoban.com/news/detail-400028.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!--引入 layui.css -->
		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/layui/2.4.5/css/layui.min.css">
		 
		<!-- 引入 layui.js -->
		<script src="https://cdnjs.cloudflare.com/ajax/libs/layui/2.4.5/layui.js"></script>
		<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
	</head>
	<body>
		<script id="demo" type="text/html">
			<div>{{d[0]}}</div>
		</script>
		<div id="sentence"></div>
	</body>
	<script>
		    layui.use(['layer','jquery','laytpl'], function () {
		        var $ = layui.$,   //jQuery复制
		            layer = layui.layer,
		            laytpl = layui.laytpl;
					
				//var data = {"title":"layui模板引擎的测试!"}
				var data = [1,2,3,4,5]
				let tpl = demo.innerHTML
				let view = document.getElementById("sentence")
				laytpl(tpl).render(data,function(html){
					view.innerHTML = html
				})
			});
	</script>
</html>

喜欢就关注吧!

到了这里,关于LayUI模板引擎渲染数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python】flask模板渲染引擎Jinja2,流程控制语句与过滤器的用法剖析与实战应用

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年04月11日
    浏览(46)
  • X-admin经典前端后台管理模板,基于layui的轻量级前端后台管理框架,简单,兼容性好,面向所有层次的前后端程序

    简介 X-admin基于layui的轻量级前端后台管理框架,简单免费,兼容性好,面向所有层次的前后端程序。创立于2017年初,为了敏捷WEB应用开发和简化企业应用开发而诞生的。#X-admin从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。

    2024年02月16日
    浏览(64)
  • 前端模板引擎Thymeleaf的整合和使用

    目录 一、添加依赖 1.1首先,在项目的构建文件中(比如 Maven 或 Gradle)添加 Thymeleaf 的依赖。例如,对于 Maven 项目,在 pom.xml 文件中添加以下依赖 1.2保存并更新项目依赖 二、配置Thymeleaf 2.1模板位置配置 2.2模板缓存配置 2.3自定义标签配置 三、创建模板文件 3.1创建一个HTML文

    2024年04月27日
    浏览(56)
  • 前端面试:【浏览器与渲染引擎】Web APIs - DOM、XHR、Fetch、Canvas

    嗨,亲爱的读者!当我们在浏览器中浏览网页时,我们常常会与各种Web API打交道。这些API允许我们与网页内容、服务器资源和图形进行交互。本文将深入探讨一些常见的Web API,包括DOM、XHR、Fetch和Canvas,以帮助你了解它们的用途和如何使用它们。 1. DOM(文档对象模型): 用

    2024年02月11日
    浏览(48)
  • Layui中table数据表格使用方法渲染 返回的数据不符合规范,正确的成功状态码应为:“code“: 0异常处理

    返回的数据不符合规范,正确的成功状态码应为:“code”: 0异常处理 根据官方文档描述 异步数据参数中,数据格式解析的回调函数,用于将返回的任意数据格式解析成 table 组件规定的数据格式。table 组件默认规定的数据格式为 很多时候,接口返回的数据格式并不一定都符

    2024年02月16日
    浏览(41)
  • 【GAMES-104现代游戏引擎】4、引擎渲染基础(渲染基础数据、全局光照、PBR、阴影)

    游戏渲染的挑战 一个场景包含成千上万的GO需要的材质、shader、效果都不尽相同,因此 复杂度极高 当代各种硬件的适配难度高,硬件架构一直在变化 高帧率、高分辨率的要求下,使得绘制算法绘制一帧的时间越来越短, 算法效率要求高 绘制系统可以100%的使用显卡,但CPU只

    2023年04月09日
    浏览(50)
  • 【前端】Layui动态数据表格拖动排序

    目的:使用Layui的数据表格,拖动行进行排序。 使用插件:layui-soul-table 和 Layui 1.layui-soul-table文档:https://soultable.yelog.org/#/zh-CN/component/start/install 2.layui文档:Layui table模块 | 数据表格 | datatable - 在线演示 结合Layui并参看layui-soul-table官方教程,写的比较详细页比较简单。 实现

    2024年02月10日
    浏览(44)
  • JS获取Beego渲染模板Temple时传递的数据

    如果纯粹的JS调用接口,获取后端数据很直接坦率,JSON解析也就可以了。 如果需要JS获取HTML页面加载时,后端传回来的一些数据,我们也可以通过以下的方式进行获取。范例如下: 前端获取后端返回的数据: 对于这样的处理方法,虽然很基础,但是对于不知道这方面的小伙

    2024年02月11日
    浏览(33)
  • layui中渲染table表格

    可直接根据文档要求去写 table 组件(这个不重要) 重要的是去修改JS里面的东西,比如:code码、分页这些文档里是没有的 有帮助的点个赞赞 !!!

    2024年02月14日
    浏览(40)
  • layui学习笔记(三)关于layui渲染表格因权限判断需要动态隐藏列的研究

    TP6+Layuiadmin+apache+mysql+vscode学习研究layui前端技术 layui2.76版本,渲染的表格,因同一页面不同用户权限判断,所需要有不同的表格列来支持时,目前无法满足。 layui文档中有hide:true这一方法。 单独使用hide:true隐藏时是没问题的,但是这是个初始化隐藏,无法进行判断。 网上的

    2024年01月21日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包