easyTemplate概述与实例

一.概述

  在前后端分离的解决方案中,模板起到了重要作用!

  在使用Struts或Spring的后端中,使用Freemarker模板作为载体,能够非常有效的实现前后端的分离。
  有人或许会认为使用前端模板一样可以实现此效果,而且实现的会更好。如果单纯从技术和实 现的角度去考虑,确实是使用前端模板效果会更好,前后端分离的会更彻底,但如果真的这样做,任何地方都采用前端模板去渲染,那这样的WEB应用将会失去高 可靠性及易用性。
  我们的建议是,一般的页面由后端模板渲染,页面中的某些特殊模组,可以由前端模板进行渲染,比如,一个具有诸多交互且内 容不断变化的数据列表。
  在使用过Freemarker模板后,感觉它的语法比较朴实,平易近人,容易上手,于是决定按它的语法风格实现一个前端的 模板引擎,这就有了下面的EasyTemplate!
  EasyTemplate模板的函数大小为1.34k(未压缩),暂时只实现了 list,list index,if elseif else等功能,可以满足大部分的使用需求了。

  据悉,EasyTemplate模板引擎的解析速度测试,渲染1000行数据,在不同的浏览器中,平均速度大约在30豪秒以内。


二.EasyTemplate可用标签
<#macro tname dataname> //模板开始标签,tname为此模板的名称,dataname为此模板中用到的数据名称

<#if (condition)>
<#elseif (condition)>
<#else>
</#if>

 

${x?a:b} //三元表达式,最后不能加分号";" 注意:在所有的 {} 中都不能出现分号!

 

<#list List as list> //遍历一个数组对象
${list_index} //在此次遍历中的当前索引:as 后的别名加上"_index"
${list.xxx} //取值,as后的别名.xxx
</#list> //结束遍历

 

</#macro> //模板结束标签
 

三.实例

<!doctype html>
<html>
    <head>
    	<script src="lib/jquery-1.7.2.js" type="text/javascript"></script>
        <script src="lib/easy.template.js" type="text/javascript"></script>	
	</head>
	<body>
		<div id="navSign"></div>
	</body>
	<script id="tplNavigation" type="text/x-easy-template">
<#macro tplApplyLl data>
	<dl>
		<#list data as linkObj>
			<dt>
				<#if (linkObj.link && '#' != linkObj.link)>
					<a href="${linkObj.link}" target="_black" <#if (linkObj.tabId)> tabId="${linkObj.tabId}"</#if>
						<#if (linkObj.title)> title="${linkObj.title}"</#if>>
						${linkObj.label}
					</a>
				<#else>
					${linkObj.label}
				</#if>
			</dt>
			<div>
				<#if (linkObj.subMenu && linkObj.subMenu.length)>
					<#list linkObj.subMenu as sub>
						<dd>
							<a <#if (sub.tabId)>tabId="${sub.tabId}" </#if> 
								<#if (sub.title)>title="${sub.title}" </#if>
								href="<#if (sub.link)>${sub.link}<#else>#</#if>" target="_black">
								${sub.label}
							</a>
						</dd>
					</#list>
				</#if>
			</div>
		</#list>
	</dl>
</#macro>
	</script>
	<script type="text/javascript">
		var navigationLinkData = [
	       		{label: '导航栏', subMenu: [
	               {tabId: 'linkToBaidu', label: '百度', title:'百度中国',
	               	link: 'http://www.baidu.com/'},
	   			{tabId: 'linkToGoogle', label: 'Google', title:'Google中国',
	               	link: 'http://www.google.com.hk/'},
	   			{tabId: 'linkToIteye', label: 'iteye', title:'IT技术网站',
	               	link: 'http://www.iteye.com/'},
	   			{tabId: 'linkToSina', label: '新浪', title:'中国著名门户网站',
	               	link: 'http://www.sina.com.cn/'},
	            {tabId: 'linkToSina', label: '搜狐', title:'中国最大的门户网站',
	                link: 'http://www.sohu.com/'}, 	
	            {tabId: 'linkToSina', label: '腾讯', title:'中国最具发展前景互联网腾讯的门户网站',
	                link: 'http://www.qq.com/'}, 	
	   			{tabId: 'linkToPingan', label: '中国平安', title:'中国最具影响力的金融集团',
	               	link: 'http://www.pingan.com/index.shtml'}
	   		]}
        ];
		//navigation, use template to generate html
		var getNavContent = function(data){
			if(!data || !data.length){
				return '';
			}
			var res = easyTemplate($('#tplNavigation').html(), data).toString();
			console.log(res);
			return res;
		};
		$('#navSign').html(getNavContent(navigationLinkData));
	</script>
</html>

        运行效果:
  

        工程目录结构:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你用过Ease Template吗?   PHP工程中的模板应用,关于它的好处,我想无论是在实际开发阶段还是上升到设计模式的角度都已经有很多“前辈先哲”"讨论过了。就项目实施而言,在一些中型甚至大型的项目中,有效的将HTML(还有其他文本形式的表现层)和PHP代码分开,不仅在开发阶段可以提高界面设计人员和应用程序编写人员的工作效率,更会给项目的测试和维护带来巨大的便利。 什么是模板技术?   PHP模板发展自Perl的Template。剥开神秘的面纱,模板技术的核心概念简单得令人心跳:要将你的美工页面指定为模板文件,只需将页面中活动的内容部分(如数据库输出,用户交互等)定义成形式为的变量放在模板文件中相应的位置,当用户浏览时,由PHP程序文件打开该模板文件,将模板文件中定义的变量进行替换。当然,替换成对应的数据库输出或者用户交互等动态生成内容。 Ease Template 模板能够改善网站的结构,其特点有: * 可以在几秒钟改变整个站点的外观; * 可以让网站更容易实现多语言; * 抽象程序设计,没有垃圾HTML代码; * 稳定性能初期的强大甚至超越混编代码; * 提供完善的 Debug 平台; * 开发效率快地令人惊讶; * 更容易重用模版; * 开源版权保护(保证您的版权不会被侵犯)。 模板技术经过很多年的发展已经演变出各式各样的类型:phplib就效率而言在大量应用的时候效率会降低很多,但是拥有语法简单的优势;Smarty 语法强大效率很高,问题是架构庞大,语法过于复杂。如果你正在设计一个交互式网站,你一定会关注两个主要的问题:美工和程序。这也是一个网站在建设中抛开其内容之后最关键的要素。 通常有两种方式来协调美工和程序之间的关系: 1.先做好美工页面,然后由程序员直接在美工页面的HTML文件中嵌入ASP、JSP、PHP等程序代码。 2.美工和程序同时进行,但这时因为没有页面框架,程序只能先做出部分代码,双方完成后再进行一次美工页面和程序代码的嵌入合成。   在实际的网站建设过程中,由于人员、进度等环境的限制,大家通常会混合使用上面两种协调方式。然而这两种方法都有不足之处: 1. 效率不高。两者协调不好可能产生等待、重复代码调试等现象; 2. 调试不畅。由于程序代码最终需要嵌入在HTML页面中,代码的嵌入、调试、纠错都比较繁琐; 3. 维护不便。一旦美工设计需要修改,如网站改版,那么所有程序和HTML代码混合页面都需要重写。 如果你正在使用PHP程序建设网站,那么恭喜你,PHP的模板技术会比较圆满地解决上述问题。 模板应用与结构,以往的开发流程如下:   流水线1:网站设计 -> 切图转为htm -> php工程师写程序 -> 程序套用htm -> 开发结束。 如果存在修改时流程如下:   流水线1:网站设计修改 -> 切图转为htm -> php工程师改程序 -> 程序套用htm -> 修改结束。 采用Ease Template之后将有一些区别性的变化,开发流程如下:   流水线1:php工程师写程序与简单模板 -> 程序测试 -> 开发结束。   流水线2:网站设计 -> 模板工程师修改(Dreamweaver) -> 开发结束。 修改流程如下:   流水线1:网站设计修改 -> 模板工程师修改(Dreamweaver) -> 修改结束。   流水线2:程序员工作被释放出来   Ease Template相对于Smarty或phplib提供更简单更高效的方法,甚至可以将数据库运用方法直接写入模板中,这样将无须复杂的数组转换操作。   目前发行的任何一套模板引擎都没有提供开源商业化版权保护。公司开发出的程序,有可能被合作方转卖或盗用。使用Ease Template便不用再为此问题担心,它提供了版权保护设置。开发方启用版权保护设置并对所有程序运行一次后将生成版权保护代码。开发方不需提供程序模板给合作方,程序仍可以独立完整运行。如果合作方需要修改原始模板将非常复杂甚至无法修改。商业版本的程序如果没有模板要修改页面对于任何人都将是非常头疼的工作,而采用Ease Template的开发者则按正常流程即可完成所有的修改工作。   Ease Template 经过多年的发展已经被很多框架所采用,其中比较有名气的当属FleaPHP、ThinkPHP。有些框架直接集成了Ease Template插件,用户选择Ease Template的时候无需担心兼容性以及稳定性。   当Ease Template用户觉得方法过少造成不知如何使用的时候,可以运用{run:}php方法{/run},此操作完全支持系统的所有方法以及用户自己写的方法。   看到这里也许您提出一个问题,那就是Ease Template具有这么多功能那他的速度又能达到什么程度?举个例子:对Ease Template三个引擎进行1万次循环并且载入多个模板情况下的测试结果:替换引擎0.06秒、编译引擎0.04秒、MemCache引擎0.03秒。与各种模板比较,Ease Template编译引擎的速度已经远远超越同类大部分模板,所以您无需为Ease Template的速度担心。   Ease Template 模板技术的基本概念就介绍到这里,请继续关注更加有趣的功能介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值