Writer :BYSocket(泥沙砖瓦浆木匠)
一、什么是TinyTemplate
什么是模板语言?
模板语言是为了使用户界面与业务数据(内容)分离而产生的,并能生成特定格式的文档。
什么是TinyTemplate?(开源项目地址入口)
Tiny模板引擎是一个基于Java技术构建的模板引擎,它具有体量小、性能高和扩展易的特点。 适合于所有通过文本模板生成文本类型内容的场景,如:XML、源文件、HTML等等,可以说,它的出现就是为了替换Velocity模板引擎而来,因此在指令集上在尽量与Velocity接近的同时,又扩展了一些Velocity不能很好解决问题的指令与功能,在表达多方面则尽量与Java保持一致,所以非常地易学易用。
1. 体量小表现在总共不到5000多行的代码,去掉解析器近1000行,核心引擎只有4000多行代码。
2. 性能高表现在与现在国内几款高性能模板引擎如:Jetbrick、Webit等引擎的性能相比,近乎伯仲之间,但是比Velocity、Freemarker等则有长足的进步,效率大致是Velocity四倍。
3. 扩展性表现在Tiny框架引擎的所有环境都可以自行扩展,并与原有体系进行良好统一。
4. 易学习表现在Tiny框架概念清晰、模块划分科学、具有非常高的高内聚及低耦合。
5. 使用方式灵活表现在,可以多例方式、单例方式,并可以与Spring等有良好集成。
6. 友好的错误提示信息。
简要特点介绍:
1. 类似于 Velocity 的指令方式,相同或相似指令达90%左右
2. 支持可变参数方法调用
3. 支持类成员方法重载
4. 支持函数扩展
5. 采用弱类型方式,对于模板层的代码编写约束更小,模型层怎样变化,模板层的代码调整都非常容易
6. 支持宏定义#macro
7. 支持布局#layout
二、与Servlet集成,运行Hello,World
1. 新建一个quickstart.servlettemplate maven项目
在Eclipse中,new — Maven Project — “maven-archetype-quickstart“ …
在pom.xml添加对tinyTemplate的依赖:
<!-- 模板引擎对servlet的扩展依赖 --> <dependency> <groupId>org.tinygroup</groupId> <artifactId>org.tinygroup.templateservletext</artifactId> <version>2.0.26</version> </dependency>
如上代码,重写TinyServlet的handleRequest方法即可,然后在里面进行逻辑处理,return返回index.page。
4. 添加default.layout和index.page
default.layout:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <!--[if IE 7 ]> <html class="no-js ie ie7 lte7 lte8 lte9" lang="en-US"> <![endif]--> <!--[if IE 8 ]> <html class="no-js ie ie8 lte8 lte9" lang="en-US"> <![endif]--> <!--[if IE 9 ]> <html class="no-js ie ie9 lte9" lang="en-US"> <![endif]--> <!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="en-US"> <!--<![endif]--> <html lang="en"> <head> <meta charset="utf-8"/> <title>${pageTitle}</title> <script> var contextPath = "${TINY_CONTEXT_PATH}"; var CKEDITOR_BASEPATH = contextPath+‘/ckeditor/‘; /* jQuery.fn.outerHTML = function(s) { return (s) ? this.before(s).remove() : jQuery("p").append(this.eq(0).clone()).html(); } */ </script> <link rel="shortcut icon" href="${TINY_CONTEXT_PATH}/icon/logo.png"> #if(DEBUG_MODE && DEBUG_MODE=="true") #foreach(component in uiengine.getHealthUiComponents()) <!--UI component $component.name start --> #if(component.cssResource) #set(resources=component.cssResource.split(",")) #foreach(path in resources) #set(path=path.trim()) #set(newPath=path.replaceAll("[$][{]TINY_THEME[}]","${TINY_THEME}")) <link href="${TINY_CONTEXT_PATH}${newPath}" rel="stylesheet" /> #end #end #if(component.jsResource) #set(resources=component.jsResource.split(",")) #foreach(path in resources) #set(path=path.trim()) <script src="${TINY_CONTEXT_PATH}${path}"></script> #end #end #if(component.jsCodelet) <script> $!{component.jsCodelet} </script> #end #if(component.cssCodelet) <style> $!{component.cssCodelet} </style> #end #end #else <link href="${TINY_CONTEXT_PATH}/uiengine.uicss" rel="stylesheet" /> <script src="${TINY_CONTEXT_PATH}/uiengine.uijs"></script> #end </head> <body> #pageContent </body> </html>
index.page:
${name},欢迎来到Tiny的世界! 时间:${date}
5. 运行项目,右键项目 run as — maven build — “jetty:run”。访问 localhost:8080/项目名/index
三、小结
1、TinyTemplate的简介与特点
2、TinyTemplate与Servlet的配置(下一讲与SpringMVC的配置)
3、TinyTemplate最简单的也是最常用的取值语法${}
欢迎点击我的博客及GitHub — 博客提供RSS订阅哦!
———- http://www.bysocket.com/ ————- https://github.com/JeffLi1993 ———-
微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter :BYSocket