FREEMARKER设计指南

上传人:汽*** 文档编号:570145131 上传时间:2024-08-02 格式:PPT 页数:13 大小:54.50KB
返回 下载 相关 举报
FREEMARKER设计指南_第1页
第1页 / 共13页
FREEMARKER设计指南_第2页
第2页 / 共13页
FREEMARKER设计指南_第3页
第3页 / 共13页
FREEMARKER设计指南_第4页
第4页 / 共13页
FREEMARKER设计指南_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《FREEMARKER设计指南》由会员分享,可在线阅读,更多相关《FREEMARKER设计指南(13页珍藏版)》请在金锄头文库上搜索。

1、FreeMarker设计指南1、快速入门FreeMarkervs.Velocity1、概述、概述Velocity是一个简单而且更加轻量级的工具,但是它没是一个简单而且更加轻量级的工具,但是它没有达到有达到FreeMarker能够做的许多任务,而且它的模板语能够做的许多任务,而且它的模板语言不是很强大言不是很强大我们认为对于大多数应用程序,我们认为对于大多数应用程序,FreeMarker比比Velocity工作更简单,因为:工作更简单,因为:使用使用Velocity,你需要寻找特定工具或各种工作环境来一,你需要寻找特定工具或各种工作环境来一次次的解决典型的模板创作任务,结果会浪费更多时间次次的解

2、决典型的模板创作任务,结果会浪费更多时间工作环境经常意味着在工作环境经常意味着在Velocity模板中直接使用模板中直接使用Java对象对象的方法,这违反了简单、无编程的方法,这违反了简单、无编程HTML设计的观念设计的观念或者将表示任务移到控制器代码中,这违反了或者将表示任务移到控制器代码中,这违反了MVC模式模式使用使用FreeMarker,可以以,可以以out-of-the-box(如何翻译确(如何翻译确切?)的方式实现切?)的方式实现Velocity所能做的所能做的2、特性比较清单、特性比较清单下面是一个使用下面是一个使用FreeMarker能够实现,而能够实现,而Velocity不能

3、实现的不太全面的特性清单:不能实现的不太全面的特性清单:(1)数字和日期支持)数字和日期支持l可以对任何数字类型进行算术运算和比较,包括精度类型可以对任何数字类型进行算术运算和比较,包括精度类型l可以比较和显示(格式化)日期可以比较和显示(格式化)日期/时间值时间值(2)国际化)国际化l根据各种内建和定制的数字格式,格式化本地敏感的数字根据各种内建和定制的数字格式,格式化本地敏感的数字l根据各种内建和定制的日期格式,格式化本地敏感和时区敏感的日期根据各种内建和定制的日期格式,格式化本地敏感和时区敏感的日期l标识(变量名)可以包含非英语字符,如重音字符、阿拉伯字符、中文字符等标识(变量名)可以包

4、含非英语字符,如重音字符、阿拉伯字符、中文字符等(3)循环处理)循环处理l可以跳出循环可以跳出循环l可以在循环外访问循环体内的控制变量可以在循环外访问循环体内的控制变量l可以测试是否达到最后一次循环可以测试是否达到最后一次循环(4)模板级别的数组处理)模板级别的数组处理l可以使用类似可以使用类似i语法的索引方式访问数组元素语法的索引方式访问数组元素l可以查询数组长度可以查询数组长度(5)宏宏可以有局部变量可以递归调用宏,同样可以在模板的后面定义要调用的宏调用宏时,可以按位置或名字的方式传递参数宏参数可以有缺省值,使得在调用时忽略参数也有效调用的宏可以有嵌套的体内容(body),能够在宏被调用时

5、进行处理宏是纯变量的,可以基于表达式来执行宏,或者作为参数传递给另一个宏(6)命名空间可以对变量使用多命名空间,这对创建宏库很重要,因为这可以避免应用程序中指定的变量和宏库中变量的名字冲突(7)使用内建的函数/操作符维护Java无关的string、list和map可以将字符串转换成大/小写、首字符大/小写,对HTML、XML或RTF进行转义处理,substring、split、查询字符串长度、find/replace子串等等通过索引访问list元素,获得子list,合并list,查询list长度,对list排序通过key变量访问map元素,检查map是否为空,获得key或值的list(8)揭示

6、模板中的错误当访问一个未定义的变量,FreeMarker不会沉默;你可以配置FreeMarker来停止render模板显示错误信息,或者跳过错误部分;无论哪种,FreeMarker会记录问题(日志)在写错指令名时,FreeMarker会抛出异常(9)高级render控制可以使用一组标记来封装模板的一块区域,以便在块区中所有要修改的地方应用HTML或XML转义(或其它使用FreeMarker表达式表示的转换)FreeMarker有转换器,它们是模板的一块区域,在render时,通过转换过滤;内建的转换器包括空白字符压缩、HTML和XML转义;你可以实现自己的转换器;当然转换器可以嵌套可以使用fl

7、ush指令显式的flush输出可以使用stop指令停止render(10)文字除了通常的字符串、数字和布尔值文字,也可以在模板中定义list和map文字支持所有的Java转义文字:b、t、n、f、r、”、,也支持xXXXX使用UNICODE指定字符(11)高级空白字符移除FreeMarker坚持移除各行只包含不输出FreeMarker标记的空白字符对于明显要整修掉不需要的空白字符的指令来说,空白字符是个大问题(12)集成其它技术可以在模板中使用JSP标记库可以直接在Python工程中使用13)强大的XML转换能力在2.3版本中,FreeMarker具有强大的新XML转换能力,使得替代XSLT成

8、为可能Velocity在这方面是无法真正竞争的,除非改进核心引擎,如支持宏库映射到名字空间,宏中支持局部变量(14)高级模板元程序可以捕获输出的任何部分到context变量中可以解释任何context变量,如果它是一个模板定义上述两者的结合使用1.模板+数据模型=输出FreeMarker基于设计者和程序员是具有不同专业技能的不同个体的观念他们是分工劳动的:设计者专注于表示创建HTML文件、图片、Web页面的其它可视化方面;程序员创建系统,生成设计页面要显示的数据经常会遇到的问题是:在Web页面(或其它类型的文档)中显示的信息在设计页面时是无效的,是基于动态数据的你可以在HTML(或其它要输出的

9、文本)中加入一些特定指令,FreeMarker会在输出页面给最终用户时,用适当的数据替代这些代码下面是一个例子:Welcome!Welcome$user!Ourlatestproduct:$latestProduct.name!这个例子是在简单的HTML中加入了一些由$包围的特定代码,这些特定代码是FreeMarker的指令,而包含FreeMarker的指令的文件就称为模板(Template)至于user、latestProduct.url和latestProduct.name来自于数据模型(datamodel)数据模型由程序员编程来创建,向模板提供变化的信息,这些信息来自于数据库、文件,甚至

10、于在程序中直接生成模板设计者不关心数据从那儿来,只知道使用已经建立的数据模型下面是一个可能的数据模型:(root)|+-user=BigJoe|+-latestProduct|+-url=products/greenmouse.html|+-name=greenmouse数据模型类似于计算机的文件系统,latestProduct可以看作是目录,而user、url和name看作是文件,url和name文件位于latestProduct目录中(这只是一个比喻,实际并不存在)当FreeMarker将上面的数据模型合并到模板中,就创建了下面的输出:Welcome!WelcomeBigJoe!Ourla

11、testproduct:greenmouse!2.数据模型典型的数据模型是树型结构,可以任意复杂和深层次,如下面的例子(root)|+-animals|+-mouse|+-size=small|+-price=50|+-elephant|+-size=large|+-price=5000|+-python|+-size=medium|+-price=4999|+-test=Itisatest“|+-whatnot|+-because=dontknow3.模板在FreeMarker模板中可以包括下面三种特定部分:$:称为interpolations,FreeMarker会在输出时用实际值进行替F

12、TL标记(FreeMarker模板语言标记):类似于HTML标记,为了与HTML标记区分,用#开始(有些以开始,在后面叙述)注释:包含在(而不是)之间下面是一些使用指令的例子:if指令#ifanimals.python.pricePythonsarecheaperthanelephantstoday.Pythonsarenotcheaperthanelephantstoday.list指令Wehavetheseanimals:NamePrice$being.name$being.priceEuros输出为:Wehavetheseanimals:NamePricemouse50Euroselephant5000Eurospython4999Eurosinclude指令TestpageTestpageBlahblah.一起使用指令Wehavetheseanimals:NamePrice$being.name$being.priceEuros

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号