Template模板方法的使用

TLSR8258蓝牙Mesh实战:从SDK下载到自定义通信指令全流程(附避坑指南) 本文详细介绍了TLSR8258蓝牙Mesh开发的完整流程,从SDK下载、环境搭建到自定义通信指令的实现。通过实战案例和避坑指南,帮助开发者快速掌握低功耗蓝牙Mesh网络构建技巧,适用于智能家居、工业监控等物联网场景。 阅读详情

art-template模板渲染HTML
该方法的核心思想就是将json数据传入按照art-template模板编写模板中去。

1> 引入js文件

   	<script src="./js/template-web.js" type="text/javascript" charset="utf-8"></script>

2> 准备json对象

    例如: var obj1 = {teams:[]};
               var obj2 = {arr:[a,b,c,d,e]};
    要求:后台服务器fastjson帮助我们将需要展示的数据,转换成json字符串
          能够看到json数据

3> 制定模版

    <script id="模版的唯一标识"  type="text/html">
           /*模板例子如下*/
                {{a}}
                {{b}}
                {{c}}
          在这个里面制定模板
    </script>
    
   <template id="模板的唯一标识">
     /*模板例子如下*/
                {{a}}
                {{b}}
                {{c}}
          在这个里面制定模板
   </template>

4> 渲染

  <script type="text/javascript">
          /*找到你想要操作的块*/   
  	var showDiv = document.querySelector("#id选择器");
  	   
  	//template(模版的id,json格式的对象);
  	 /*在那个块中键入*/
  	showDiv.innerHTML = template("模版的唯一标识", json对象名);
  </script>
  
  // 基于模板名渲染模板
  template(filename, data);
  filename: 对于模板的script标签的id;
  data: js获取的数据(一般是后端返回的序列化json字符串)

5> 常用语句

输出


    {{value}}             // 目前最常见的双花括号数据绑定
    {{data.key}}       // 对象点方式
    {{data['key']}}    // 另外一种对象处理方式
    {{a ? b : c}}       // 三元运算
    {{a || b}}           // 或运算  防止 undefined 报错
    {{a + b}}          // 并列输出
    {{$data['list']}} 

if 选择


{{if flag == '1'}}
     展示的内容
{{else if flag == "2"}}
     展示的内容
{{else}}
     展示的内容
{{/if}}

循环

 注意:
 target 支持 array 与 object 的迭代,其默认值为 $data。
 $value 与 $index 可以自定义:{{each target val key}}。
  -- stuArray 是json中属性名 
  -- 没有设置别名的时候  {{$index}} 索引  {{$value}}获取数组中值
  -- stu是别名,可以修改
  -- index 数组的索引,从0开始
  {{each stuArray  stu index}}
       {{stu}} 
 	  {{stu.name}}
 	  {{index}}
  {{/each}}
  
  -- json属性的值,就是一个值,不是对象,也不是数组
  {{json的属性名}}

打印 print

   <script>
      var obj={ a: 'hello', b: '--world', c: '--!!!'};
   </script>

   <template id="mb1">
        {{print a b c}}
   </template>

转义问题

    <template id="mb">
    	显示文本:   {{userImg}}
    	<hr>
    	显示图片:    {{@userImg}}   或者   {{#userImg}} 
    </template>
    
    <script type="text/javascript">
    	 var obj={userImg:"<img src='./img/1.jpg'>"}
    	 document.querySelector(".show").innerHTML=template("mb",obj);
    </script>

模板中可以嵌入子模版


   {{include '另外一个模版的id' 参数值}}
   <template id="template1">
   <ul class="artists">
   		 {{each artists  singer index}}
   		  <li>
   			 {{index+1}}
   			 <br>
   			 {{singer.name}}
   			 <br>
   			 {{include 'mb' singer}}
   		 </li>
         {{/each}}
   </ul>
  </template>
   <template id="mb">
   <!-- <img src="{{img1v1Url}}" width="80px"> -->
          {{id}}
   </template>

自定义过滤器

    // 定义变量
   template.defaults.imports.log = console.log;
   使用变量
   <% $imports.log('hello world') %>  == console.log('hello world')
   
   自定义过滤器定义函数
   template.defaults.imports.方法名 = function ( 参数 ) {
   
   }
   
   然后在模版中使用这个过滤器
   <span>{{json属性名 | 自定义过滤器方法名}}</span>
   <span>{{参数1|自定义过滤器方法名:参数2,参数3,... }}</div>

  <!DOCTYPE html>
  <html>
  	<head>
  		<meta charset="utf-8">
  		<title></title>
  	</head>
  	<body>
  		<div class="show">
  			
  		</div>
  		
  		<script src="./js/template-web.js" type="text/javascript" charset="utf-8"></script>
  		
  		<template id="k1">
  			  {{each sexList  sex}}
  			        {{sex|sexinfo}}  <br>
  			  {{/each}}
  		</template>
  		
  		<script type="text/javascript">
  			//自定义验证器在,js代码中写
  			template.defaults.imports.sexinfo=function(sex){
  				return sex==1?"男":"女";
  			}
  			
  			//定义一个json对象
  			var jsonObj={"sexList":[1,0,1,1,1,0]};
  			
  			//渲染模板
  			document.querySelector(".show").innerHTML=template("k1",jsonObj);
  			
  		</script>
  		
  	</body>
  </html>
  
  
  

定义变量

   {{set temp = data.sub.content}}

新加:(使用jquery函数库可以帮助我们快速的写出模板)

下面是一个例子(在jsp上写出用户列表界面)
下面是用户界面。在页面上显示出来的东西都用下面的html代码编写。
在这里插入图片描述tempalte模板正餐时间:
1.首先,我们先引入jquery模板和tempalte模板。
在这里插入图片描述

2.其次,在用页面加载完成之后调用显示方法。其中

	<script type="text/javascript">
	function showListData() {
//		参数一:url   参数二:页面传递的servlet的值    参数三:回调函数,servlet传递给页面的值
			//参数四:返回的数据类型
			//$.post的意思是访问servlet的post方法。
			$.post(
					//参数一:url 
					"user?type=userList", 
					//参数三:回调函数	data是servlet传给页面的json数据	
					function(data) {
				    //被渲染的数据  
				       var jsonObj = 
	   //json的标准模式 { key:value }; 通过key属性值可以查询到value
	   //也可以称之为建立一个引用userList指向有servlet传过来的数据data;
				       {userList : data};
		//通过标签名定位到 (想要写数据的块或者是表中)
		//然后利用jquery封装的html方法渲染template模板
				       $("#user_table>tbody").html(
// 是根据模板名来渲染模板。 template("模板名或者是模板id",servlet传过来json对象)		    		   
						template("userList_template", jsonObj))

			      },
			//参数四:返回的数据类型
			'json');
		}
		</script>

3.编写template模板:

	<script id="userList_template" type="text/html">
<!--调用each方法遍历userList  (上面的json对象,再给它一个自定名,最后如果有需要还可以
给它定义一个索引)-->
              {{each userList user}}
               <tr>
                    <td>{{user.userId}}</td>
                       <td>{{user.userName}}</td>
                       <td>{{user.userPwd}}</td>
                       <td>{{user.userPhone}}</td>
	<!-- 在使用src指向时必须添加双引号“”还有json格式的{{}} -->
                       <td><img src="{{user.userImg}}" width="50px" ></td>
                       <td>
                      {{if user.userFlag==0}}
                                   普通用户
                    {{else}}
                                    管理员
	<!--千万不要忘记在if语句结尾时给它添加{{/if}}  -->
                  {{/if}}
                       </td>
                    <td>
                       <a href="javascript:void(0);" id="uploadbtn">修改</a>
                    <a href="javascript:void(0);" id="uploadbtn">删除</a>
                   </td>
   </tr>
	<!--千万不要忘记在each语句结尾时给它添加{{/each}}  -->
{{/each}}
</script>
dpdk 源码分析 rte_ring rte_ring源码分析 阅读详情

相关推荐

SocraticLM: Exploring Socratic Personalized Teaching with Large Language Models

大型语言模型(LLM)被认为是推进智能教育的一项关键技术,因为它们展示了深入理解教学场景和为学生提供个性化指导的潜力。然而,当前个性化教学中基于LLM的应用主要遵循“问答”范式,学生被动地获得答案和解释。在本文中,我们提出了苏格拉底式教学模式(SocraticLM ),它实现了一种苏格拉底式的“发人深省”的教学范式,实现了真正的课堂教师的角色,让学生积极参与到真正掌握解决问题所需的思考过程中。

weixin_43961909的博客 2884

js模板引擎-art-template常用总结

js模板引擎-art-template常用总结 js模板引擎-art-template常用总结 art-template javascript 模板引擎,官网:https://github.com/aui/art-template 分为原生语法和简洁语法,本文主要是讲简洁语法 基础数据渲染 输出HTML 流程控制 遍历 调用自定义函数方法 子模板引入 基础数据渲染 一、引入art-template...

sd7089852的博客 553

Amesim基础篇-元件详解-流体库管路

Amesim基础篇-元件详解-流体库管路

2201_75375391的博客 4524

vue在html标签 {{}} 中调用函数的方法

vue在html标签 {{}} 中调用函数

qq_45327886的博客 1万+

PC微信逆向:破解聊天记录文件!_读取别人pc微信msg文件

本文详细介绍了PC版微信数据库的解密方法,总结了前人经验并补充了关键细节。通过OllyDbg调试工具从微信内存中获取32字节加密密钥,使用C++结合OpenSSL库实现解密程序。重点解决了开发环境配置问题,包括Visual Studio项目设置和OpenSSL库的版本适配,将原本固定的数据库路径改为参数化输入,提高了工具的通用性。该方案为电子取证中的微信数据提取提供了完整的技术路径,避免了研究者重复探索已解决的问题。

zz96405784848的博客 9756

地图坐标系大全:常用地图坐标系详解与转换指南

地图坐标系是用于描述地图上位置的数学模型。它可以用来表示地球表面上的任意一个点,使得这个点的位置可以在地图上精确定位。不同的地图坐标系采用不同的基准面和投影方式,因此会有不同的坐标系参数,不同的坐标系之间也需要进行坐标转换。在地图制图、导航、GIS等领域中,地图坐标系是一个非常重要的概念。

weixin_39888010的博客 1万+

element-plus 之 el-upload上传多图并预览

vue3、element-plus、el-upload

weixin_43136717的博客 6449

CentOS 7/8 系统下,基于Docker Compose一键部署Dify AI应用平台

本文详细介绍了在CentOS 7/8系统下,使用Docker Compose一键部署Dify AI应用平台的完整流程。从系统环境准备、Docker引擎安装与加速配置,到获取Dify项目、关键环境变量设置,再到服务启动、状态监控及初始化访问,提供了手把手的部署指南和常见问题排查方法,帮助用户快速搭建稳定、可维护的AI应用开发环境。

q5r6s7的博客 139

vue 在template中使用全局函数

vue 在页面中使用全局函数

weixin_43638272的博客 2596

OpenCV实例(八)车牌字符识别技术(三)汉字识别

相较于数字和英文字符的识别,汽车牌照中的汉字字符识别的难度更大,主要原因有以下4个方面:(1)字符笔画因切分误差导致非笔画或笔画流失。(2)汽车牌照被污染导致字符上出现污垢。(3)采集所得车辆图像分辨率低导致多笔画的汉字较难分辨。(4)车辆图像采集时所受光照影响的差异导致笔画较淡。综合汉字识别时的这些难点来看,很难被直接提取的是字符的局部特征。笔画作为最重要的特征而仅存在于汉字中,这由先验知识可知。一旦捺、横、竖、撇这些笔画特征被提取到,对于汉字字符识别的工作就完成了许多。

小幽余生不加糖 1650

pytorch搭建SSAE实现预测分类代码模板完整代码

pytorch搭建SSAE实现预测分类代码模板完整代码

325

模板方法(Template Method)

设计模式系列 Template Method 模板模式——对象行为模式 1.意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 2.适用性 模板方法应用于下列情况: 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 各子类中公共的行为应被提取出来并集中到一个公共父...

行走 1429

《FPGA接口与协议》专栏的说明与导航

《FPGA接口与协议》专栏的说明与导航(建议阅读)。

孤独的单刀 17万+

模板方法(Template Method)模式

模板方法(Template Method)模式 ​ 定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。 抽象父类负责定义操作中的业务骨架,而把某些具体的实现步骤延迟到子类中去实现。 1. 模板的结构 1.1. 抽象类/抽象模板(Abstract Class) 1)抽象模板类 负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。这些方法的定义如下。 ① 模板方法:定义了算法的骨架,

weixin_42759582的博客 5082

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

设计模式之 Template Method 模板方法:Swift 实现

抽象父类定义了模板方法框架,具体的实现类(子类)不能重写模板方法,只修改实现细节。

iOS 开发 701

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

交给子类: Template Method(模板方法模式)【PHP】

Template Method(模板方法模式) ---- 将具体处理交给子类 Template Method 就是定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构可以定义该算法的某些特定步骤 。 简单地说就是 用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体的行为。 应用场景 一次性实现一个算法的不变的部分,并将可...

weixin_30502157的博客 132

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

模板方法(Template)

模板方法模式: 顾名思义,模板方法就是造一个模板,比如: 1、生活中写简历,我们可能会问同学,有没有简历模板呀,借我看一下,我们拿到模板只要按照我们个人情况往上加就行了; 2、再比如语文答题,老师可能会说这种题答题都是有模板的,先答什么,再答什么,里面的内容根据题意往上加就行了 可见,不管是生活中还是程序中,有些东西的组成部分,执行顺序是比较复杂,难记的,要是给个模板就简单很多了。所以,模...

疯狂的蜗牛 506

研磨设计模式之《模板方法模式template method》

概述: 模板方法本质是将既定不变的步骤,流程,方法,算法封装起来对外提供统一的接口,以复用这些流程或算法步骤;我们以登录界面为例,假设有两种用户普通用户client和管理员用户master,他们都需要登录login,即包含获取用户信息find_get_user,密码加密encrypt_pwd,匹配获得结果match这几步,只是具体的实现可能不同。我们将登录步骤抽象为统一的模板,封装为login方法...

长江不择细流,故能浩荡万里 250

模板方法(Template Method) Java实现

模板方法模式 模板方法(Template Method)的定义 模板方法是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方法实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。 模板方法模式的结构 模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。...

CmdSmith的博客 1051

Template 模板方法

定义 在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。 它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。 简单说,就是定义一个操作的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构就可以重新定义该算法的某些步骤。 优缺点 优点: 封装不变部分,扩展可变部分。 提取公共代码,便于维护。 行为由父类控制,子类实现。 缺点: 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大 。 实现 模板方法可以做

写代码写久了才发现:人生和程序一样,经常 Bug 多、需求乱,重构难,但总能跑起来。这个博客记录我从迷茫到搞懂、从踩坑到归纳、从混乱到清晰的过程。写给过去迷茫的自己,也写给同样在路上折腾的你。没有炫技,没有玄学,只有真实的思考、实践和成长。 550

15.Template——模板方法

demo描述:要制作不同口味的豆浆,制作流程相同,制作期间加的料不同。将制作流程做成模板,与具体实现结合完成一个完整的制作流程 demo代码: 制作流程: public abstract class SoyaMilk { // 钩子方法,决定是否添加配料 boolean customerWantCondiments() { return true; } //模板方法,可以做成final,不让子类覆盖 final void make() .

九 294

c++template method模板方法

模板方法一般在类库里面比较常见,类库里把实现某一功能需要的各个步骤逻辑实现好,调用者只需要按照需要重新修改某几步。框架是相对稳定的,变化隔离在客户程序。 例如实现某一功能逻辑如下 step1() step2() if (step()3) setp4() setp5() step2和step4不同用户有不同实现,其他步骤固定 将上述逻辑用模板方法实现 template_method_lib.h #i...

pynash123的博客 478

模板方法Template

动机:     在面向对象的世界里,代码复用主要体现在继承。然而当我们想让子类不仅能继承,而且也能重新定义方法时,很自然地就想到重写方法,但是这样是把整个方法的重写。如果我们有这样的一种需求,在父类的某个方法只能完成方法一个部分,而另一部分必须由子类去完成(这种应用在编写框架时遇到的很多),并且在调用这些由子类实现的方法有一定的逻辑。当有这样的需求时,我们应该怎么办——模板方法。 意图: 定...

weixin_34228662的博客 80

模板方法模式(Template Method)

1. 定义 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 2. UML类图 模板方法模式的UML类图很简单,就是一个抽象实现和一个具体实现类的继承关系,也是最简单的行为性设计模式。 AbstractClass: 抽象模板方法templeteMethod定义了模板方法的使用流程,可以包含非抽象方法和抽象方法,所以只能是抽象类,而不能是接口。 ConcreteClass: 具体实现类,模板方法的一种具体实现,根据模板

bluerheaven的博客 408

Template Method——模板方法模式

Template Method——模板方法模式 什么是模板方法模式 ​ 在父类中定义处理流程的框架,在子类中实现具体处理的模式就称为模板方法模式,模板方法通过把不变的行为移到父类,去除子类中的重复代码,提高代码复用率。 ​ 如果要完成在某***一些细节层次一致的一个过程或一系列步骤,旦其个别步骤在更详细的层次上的实现可能不同***时,可以考虑用模板方法模式。 模板方法模式中的角色构成 模板方法模式类图 AbstractClass (抽象类) ​ AbstractClass角色负责实现模板方法以及声

qq_36491103的博客 248
上一篇: 数据库连接池的原理及常用的数据库连接池
下一篇: javascript的简单叙述
豆芋
博客等级 码龄6年 3粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值