1. 应用场景

前端使用的模板系统  或  后端Javascript环境发布页面

2. 功能描述

提供一套模板语法,用户可以写一个模板区块,每次根据传入的数据,生成对应数据产生的HTML片段,渲染不同的效果。

3. 特性

1)、语法简单,学习成本极低,开发效率提升很大,性价比较高(使用Javascript原生语法);
2)、默认HTML转义(防XSS攻击),并且支持包括URL转义等多种转义;
3)、变量未定义自动输出为空,防止页面错乱;
4)、功能强大,如分隔符可自定等多种功能;

4. 使用步骤

1)在页面中引入js文件。

<script type="text/javascript" src="./baiduTemplate.js"></script>

2)定义模板片段

页面中,模板块可以放在 <script> 中,设置type属性为text/template或text/html,用id标识,如:

<script id='test1' type="text/template">
<!-- 模板部分 --> <!-- 模板结束 -->
</script>

或者存放在 <textarea> 中,一般情况设置其CSS样式display:none来隐藏掉textarea,同样用id标识,如

<textarea id='test2' style='display:none;'>
<!-- 模板部分 --> <!-- 模板结束 -->
</textarea>

模板也可以直接存储在一个变量中

var tpl = "<!-- 模板开始 --> 模板内容 <!-- 模板结束 -->";

3)准备模板数据,通常为json格式

//单个变量
var data = {username:"username"}
//数组
var data={testarr:['test data 1','test data 2','test data3']}
//对象
var data =
{person:"id":4,"username":"king","password":"123456","age":19}}
//list集合
var data = {list: [{"id":1,"username":"king","password":"1","age":25},{"id":2,"username":"king","password":"11","age":19},{"id":3,"username":"king","password":"11","age":19},{"id":4,"username":"king","password":"123456","age":19}]}

4)  数据传入模板,生成html片段

方法一: 传入模板的同时,也传入数据

如果模板片段是script或者在textarea中定义的,则使用id传入方法,

// 'test1'表示模板片段中的id号, data表示准备的模板数据
var data_html = baidu.template('test1',data);

如果是像tpl一样保存在变量中时,格式类似,如下

//tpl表示定义的模板变量
var data_html = baidu.template(tpl, data)

方法二:传入模板后,不传数据,可以当做一个函数使用,这样就分两步操作。

//传入模板
var fun1 = baidu.template('test1');
var fun2 = baidu.template(tpl); //使用上面的函数
var data_html = fun1(data)
var data_html = fun2(data)

上面两种方法中,方法二将模板封装为函数,可以多次调用。

所以 如果是一个通用的模板建议使用方法二,否则使用方法一。具体根据实际情况来。

如果觉得baidu.template比较长,也可以定义一个别名如 var bt = baidu.template;

5) 使用生成的html片段

//js中使用html片段填充下面的div
document.getElementById('div_1').innerHTML=data_html; //定义空的div容器
<div id ='div_1'></div>

5. 如何书写模板

在4.2中简单说明了定义模板的格式,下面具体说明如何定义模板,以下使用script为例子

<%  %>表示分隔符,分隔符内语法为js语法:

//输出单个变量
<%=title%> //if判断
<%if(list.length){%>
<h2><%=list.length%></h2>
<%}else{%>
<h2>list长度为0<h2>
<%}%> //for循环
<%for(var i=0;i<list.length;i++){%>
<li><%=list[i]%></li>
<%}%> //关于转义,默认html转义,如果不转义,使用如下
<%:=title%> 或 <%-title%> //另外有个全局转义变量控制
//设置默认输出变量是否自动HTML转义,true自动转义,false不转义
baidu.template.ESCAPE = false; //模板内注释
<!-- 模板中可以用HTML注释 -->  或  <%* 这是模板自带注释格式 *%>
 

到此结束,非常简单。上面这些都是摘自官网的说明。

一般应用在轻量级的前端开发中,单纯使用js来开发的前端页面,如移动h5的开发,避免使用jquery等重量级的前端框架影响性能。

baidu.template.js下载地址(不确定是不是官方出品的):http://baidufe.github.io/BaiduTemplate/

百度JS模板引擎的更多相关文章

  1. 百度JS模板引擎 baiduTemplate 1.0.6 版

    A.baiduTemplate 简介 0.baiduTemplate希望创造一个用户觉得“简单好用”的JS模板引擎 注:等不及可以直接点左侧导航中的”C.使用举例“,demo即刻试用. 1.应用场景: ...

  2. baiduTemplate.js 百度JS模板引擎

    baiduTemplate希望创造一个用户觉得“简单好用”的JS模板引擎 先展示两个例子,然后说说对baidutemplate.js的理解,从而将这一工具加到个人百宝箱里. <script id ...

  3. doT js 模板引擎【初探】要优雅不要污

    js中拼接html,总是感觉不够优雅,本着要优雅不要污,决定尝试js模板引擎. JavaScript 模板引擎 JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注. ...

  4. 各种JS模板引擎对比数据(高性能JavaScript模板引擎)

    最近做了JS模板引擎测试,拿各个JS模板引擎在不同浏览器上去运行同一程序,下面是模板引擎测试数据:通过测试artTemplate.juicer与doT引擎模板整体性能要有绝对优势: js模板引擎 Ja ...

  5. 调研js模板引擎

    js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...

  6. js模板引擎介绍搜集

    js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...

  7. 浅析js模板引擎

    js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...

  8. Epii.js 一个极其简单的Js模板引擎

    Epii.js 简约而不简单的Js模板引擎 Epii.js 简约而不简单的JavaScript模板引擎 # 特性 一个轻量级模板引擎,可快速实现数据与ui绑定(数据变动,UI自动变动),快速实现事件绑 ...

  9. js模板引擎之juicer,特别好用

    中文文档地址 https://www.npmjs.com/package/juicer Juicer基础知识:语法2  http://blog.163.com/lvshutao@126/blog/st ...

随机推荐

  1. T-SQL 之 触发器

    触发器可以做很多事情,但也会带来很多问题.正确的使用在于在适当的时候使用,而不要在不适当的时候使用它们. 触发器的一些常见用途如下: [1] 弹性参照完整性:实现很多DRI不能实现的操作(例如,跨数据 ...

  2. Oracle中CBO优化器简介

    Oracle中CBO优化器简介 Oracle数据库中的优化器是SQL分析和执行的优化工具.它负责制定SQL的执行计划,也就是它负责保证SQL的执行计划的效率最高,比如优化器决定Oracle以什么样的方 ...

  3. PHP开发学习门户第三版UI正式上线

    官网:http://www.phpthinking.com/ 论坛:http://bbs.phpthinking.com/ 迭代.迭代,似魔鬼的步伐.似魔鬼的步伐-- PHP开发学习门户第二版UI用了 ...

  4. 【Linux】cat命令

    用途 cat用于将一个档案的内容连续的打印在屏幕上 全称 cat的全称是Conctaenate 参数 -A :相当于-vTE的整合选项,可列出一些特殊字符而不是空白而已 -b :列出行号,仅针对非空白 ...

  5. Makefile之大型工程项目子目录Makefile的一种通用写法

    管理Linux环境下的C/C++大型项目,如果有一个智能的Build System会起到事半功倍的效果,本文描述Linux环境下大型工程项目子目录Makefile的一种通用写法,使用该方法,当该子目录 ...

  6. iOS pickerView(所有类型一网打尽)

    概述 关于PickView的所有类型都在这里 详细 代码下载:http://www.demodashi.com/demo/11017.html 首先看下项目的整体结构: 一.准备工作 UIPicker ...

  7. ssh(安全外壳协议)

    SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专 ...

  8. 微信公共服务平台开发(.Net 的实现)1-------认证“成为开发者”

    这些代码也就开始认证的时候用一次,以后就不用了: const string Token = "XXXXX";//你的token protected void Page_Load(o ...

  9. 对log4cpp进一步封装

    //Mylog.h如下: #pragma once//#include <iostream>#include <log4cpp/Category.hh>#include < ...

  10. OpenSAML2.X 在SSO系统中的应用

    背景 年底的时候有机会开发一个SPA(单页面应用)的项目,那时候须要用到票据的方式能够用Cookie的方式来登录.当是想到了OpenID或者是CAS的方式来做统一认证中心.后来一个安全界的大牛推荐让我 ...