baiduTemplate 基本知识总结
html
<div id="tem1"></div>
<div id="tem2"></div>
<!--可以使用textarea定义模板 使用css display none 并且用id来标示-->
<textarea id="t:myTem3" style="display: none;">
<h3>title:<%=title%></h3>
<%if(list.length>0){%>
<ul>
<!--循环语句for-->
<%for(var i=0; i< list.length;i++){%>
<li><%=list[i].name%></li>
<%}%>
</ul>
<%}else{%>
<div>没有数据!</div>
<%}%>
</textarea>
<div id="tem3"></div>
template
<!--可以使用script标签 type='text/html' 来定义模板,并且用id来标示-->
<script type="text/html" id="t:myTem1">
<!--语法均为javascript的原生语法,默认分隔符是<% %>也可以自定义-->
<%* 输出变量语句 <%=%> 等号不要忘记了!!!!!*%>
<h3>title:<%=title%></h3>
<%if(list.length>0){%>
<ul>
<!--循环语句for-->
<%for(var i=0; i< list.length;i++){%>
<li><%=list[i].name%></li>
<%}%>
</ul>
<%}else{%>
<div>没有数据!</div>
<%}%>
</script>
<!--可以使用使用字符串定义模板 并且用id来标示-->
<script type="text/javascript" id="t:myTem2">
var tmp2='<h3>title:<%=title%></h3>\
<%if(list.length>0){%>\
<ul>\
<%for(var i=0; i< list.length;i++){%>\
<li><%=list[i].name%></li>\
<%}%>\
</ul>\
<%}else{%>\
<div>没有数据!</div>\
<%}%>';
</script>
使用模板
<!--使用模板-->
<script type="text/javascript">
var data={
title:"this is my baiduTemplate",
list:[
{name:'zhangSan'},
{name:'liSi'},
{name:'wangWu'},
{name:'zhaoLiu'},
{name:'zhaoLiu2'}
]
}
/*使用baidu.template 的命名空间*/
var bt=baidu.template;
/*最简单的使用方法*/
/*传入模板的id*/
var html=bt('t:myTem1',data);//或者直接使用 varhtml=baidu.tempalte('t:myTem1',data);
/*传入模板字符串*/
var html2=bt(tmp2,data);
/*可以先传入模板id,不传入id,返回的是模板函数*/
var fun=bt('t:myTem3');
/*然后传入data生成不同的HTML片断*/
var html3=fun(data);
document.getElementById("tem1").innerHTML=html;
document.getElementById("tem2").innerHTML=html2;
document.getElementById("tem3").innerHTML=html3;
</script>
总结:
1 定义模板 使用script type为 text/html或者text/template 需要使用id标示 火或者存放在textarea中,使用css dispaly none; 使用id标示
demo
<script id='test1' type="text/template">
<!-- 模板部分 --> <!-- 模板结束 -->
</script>
<script id='test2' type="text/html">
<!-- 模板部分 --> <!-- 模板结束 -->
</script>
<textarea id='test3' style='display:none;'>
<!-- 模板部分 --> <!-- 模板结束 -->
</textarea>
模板也可以直接存储在一个变量中
var tpl = "<!-- 模板开始 --> 模板内容 <!-- 模板结束 -->";
2 分隔符为<%%>
3 直接输出变量 <%= arg%>
4 使用js语法 需要使用<%%>分隔符与html语句分隔开
5 使用baiduTemplate 使用变量接收baidu.template 的命名空间
baiduTemplate 占用baidu.template 命名空间
可以赋值给一个短名变量使用
var bt=baidu.template;
6 使用原生的javascript
7 调用引擎的方式 数据结构是一个JSON
8 生成对应的html片断 tpl是传入的模板类型,可以是模板id,可以是一个模板片断字符串,传入模板和对应的数据返回对应的HTML片断
//方法一:直接传入data,返回编译后的HTML片段
var html0 = baidu.template(tpl,data); //或直接传入id即可
var html0 = baidu.template('test1',data);
或者可以只传入tpl,这时返回的是一个编译后的函数,可以把这个函数缓存下来,传入不同的data就可以生成不同的HTML片段
//方法二:先不传入data,返回编译后的函数
var fun = baidu.template(tpl);
//或直接传入id即可
var fun = baidu.template('test1'); //之后通过改变数据,调用缓存下来的函数,产生不同的HTML片段
var html1 = fun(data1);
var html2 = fun(data2);
最后将他们插入到一个容器中即可
document.getElementById('result0').innerHTML=html0;
document.getElementById('result1').innerHTML=html1;
document.getElementById('result2').innerHTML=html2;
模板基本语法(默认的分隔符是<%%>,也可以是自定义)
分隔符内语句为js语法,如:
<%
var test=function(){//函数体}
if(){}else{}
function testFun(){
return;
}
%>
注释:
<!-- 模板中可以使用HTML注释--> 或者<%*这是模板自带的注释格式*%>
<% //分隔符内部支持js注释%>
输出一个变量
/%*输出一个变量 *%/
<!--默认html转义,如果变量未定义,输出为空-->
<%=title%>或者<%:h=title%>
<!--不转义-->
<%:=title%> 或者是 <%-title%>
//url转义 UI变量使用在模板链接地址URl的参数中时,需要转义
<%:u=title%>
<!--UI变量使用在HTML页面标签onclick等事件函数参数中需要转义-->
//“<”转成“<”、“>”转成“>”、“&”转成“&”、“'”转成“\'”
//“"”转成“\"”、“\”转成“\\”、“/”转成“\/”、\n转成“\n”、\r转成“\r”
<%:v=title%>
判断语句
<%if(list.length>0)%>
<div><%=list.length%></div>
<%else{%>
<div>list的长度为0</div>
<%}%>
循环语句
<%for(var i=0; i< list.length; i++){%>
<li><%=list[i].name%></li>
<% }%>
用户自定义分隔符 默认是<%%> -------不推荐使用
//设置左分隔符为 <!
baidu.template.LEFT_DELIMITER='<!'; //设置右分隔符为 <!
baidu.template.RIGHT_DELIMITER='!>';
自定义默认输出变量是否自动HTML转义--------不推荐使用
//设置默认输出变量是否自动HTML转义,true自动转义,false不转义
baidu.template.ESCAPE = false;
10 对于不存在的数据,baiduTemplate做了很好的处理,使用空字符串来代替,而不是undifined这样的对象未定义
也可以把模板抽到一个文件中,需要时再使用demo
tem.html
<!--可以使用使用字符串定义模板 并且用id来标示-->
<h3>tmp:title:<%=title%></h3>
<%if(list.length>0){%>
<ul>
<%for(var i=0; i< list.length;i++){%>
<li><%=list[i].name%></li>
<%}%>
</ul>
<%}else{%>
<div>没有数据!</div>
<%}%>
主页面 html
<div id="tem"></div>
主页面 js
var data={
title:"this is my baiduTemplate\\",
list:[
{name:'zhangSan'},
{name:'liSi'},
{name:'wangWu'},
{name:'zhaoLiu'},
{name:'zhaoLiu2'}
]
}
$.ajax({
url:'templates/tem.html',
dataType:'html',
success:function(tmp){
var html=bt(tmp,data);
document.getElementById("tem").innerHTML=html;
} });
ajax获取模板页面,在success中渲染页面。
参考1 http://baidufe.github.io/BaiduTemplate/
baiduTemplate 基本知识总结的更多相关文章
- 你必须知道的EF知识和经验
注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- 学点HTTP知识
不学无术 又一次感觉到不学无术,被人一问Http知识尽然一点也没答上来,丢人丢到家了啊.平时也看许多的技术文章,为什么到了关键时刻就答不上来呢? 确实发现一个问题,光看是没有用的,需要实践.看别人说的 ...
- java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?
你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...
- [C#] C# 知识回顾 - 学会处理异常
学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...
- [C#] C# 知识回顾 - 学会使用异常
学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...
- [C#] C# 知识回顾 - 异常介绍
异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally ...
- [.NET] C# 知识回顾 - Event 事件
C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...
随机推荐
- 2016 Multi-University Training Contest 9 solutions BY 金策工业综合大学
A Poor King Tag: Reversed BFS Preprocessing is needed to calculate answers for all positions (states ...
- JS变量写到HTML页面中并修改变量值(前台处理数据序号问题)
有时候我们在前台需要对序号进行处理,我们需要将JS变量写到页面中进行显示. 第一种方式:后台处理 第二种方式:JS中定义全局变量,然后进行显示,可以书写一个JS函数对不同的需要进行不同的替换,也就可以 ...
- zookeeper学习0
参考文献: 5分钟让你了解 ZooKeeper 的功能和原理 Zookeeper专题——1.分布式事务(a概述) Zookeeper专题——2.分布式锁-基于Zookeeper的分布式锁
- 希尔排序(shell)
希尔排序: 思路: 希尔排序是插入排序的一种改进的版本. 先将整个待排序记录序列分割成若干个子序列,在在序列内分别进行直接插入排序,待整个序列基本有序时,再对全体记录进行一次直接插入排序. 这里增量序 ...
- hdu 2438 Turn the corner [ 三分 ]
传送门 Turn the corner Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- A. Link/Cut Tree--cf614A ()
这个题卡精度了 刚开始是2的57次方都已经有误差了 不知道怎么弄 后来加个求余就好了 #include<stdio.h> #include<math.h> #include ...
- linux修改PS1,自定义命令提示符样式
目录 参数说明 修改颜色 linux默认的命令提示符是这样的: 白色的,如果当前执行的命令很多的话,一整块屏幕上全是一堆输出信息,上一条命令在哪?我刚输入的命令在哪?找的头晕.有没有办法可以修改命令提 ...
- File类的三种构造方法
package cn.zmh.File; import java.io.File; /* * * File类的构造方法 三种重载形式 * * */ public class FileDemo1 { p ...
- 转:Linux性能评测工具之一:gprof篇
1 简介 改进应用程序的性能是一项非常耗时耗力的工作,但是究竟程序中是哪些函数消耗掉了大部分执行时间,这通常都不是非常明显的.GNU 编译器工具包所提供了一种剖析工具 GNU profiler(gpr ...
- 210 Course ScheduleII
/* * 210 Course ScheduleII * 2016-6-9 by Mingyang * http://www.jyuan92.com/blog/leetcode-course-sche ...