Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7591536 建立时间:2006年5月29日 |

| |
[FreeMarker]FreeMarker 1 概述 软件技术
lhwork 发表于 2006/12/15 9:45:29 |
模板引擎 Template Engine
在B/S程式设计中,常常有美工和程序员二个角色,他们具有不同专业技能:美工专注于表现——创建页面、风格、布局、效果等等可视元素;而程序员则忙于创建程式的商业流程,生成设计页面要显示的数据等等。很多时候,要显示的资料在设计的时候并不存在,它们一般是在运行时由程式产生的,比如执行“价格不高于800NT的USB Disk”查询的返回结果。这种技术需求产生了JSP等Scriptlet,JSP十分强大,但是也常常被滥用,并导致一些不良的后果
将逻辑和表现混合在一起。破坏了美工和程序员职责的正常分解。使JSP页面难以阅读和维护。模板引擎就是为了解决上面的问题而产生的。在设计HTML的时候,我们加入一些特定指令来指定要插入哪些数据,这些加了特殊指令的HTML或者其他文本,我们称为模板(Template)。而模板引擎会在输出页面时,用适当的数据替代这些代码。模板和嵌入JSP的HTML是不同的,模板指令只有很有限的编程能力,可以避免混入商业逻辑。
三万英尺俯瞰FreeMarker
简单的说,FreeMarker就是一种用Java编写的模板引擎,它根据模板输出多种规格的文本。特别指出的是,FreeMarker与Web应用框架无关,它同样可以应用在非Web应用程序环境中。下面我们来看看FreeMarker的模板:(product.ftl)
<html><head> <title>Welcome!</title></head><body> <h1>Welcome ${user}!</h1> <p>Our latest product: <a href="${latestProduct.url}">${latestProduct.name}</a>!</body></html>这个例子是在简单的HTML中加入了一些由${…}包围的特定代码,这些特定代码就是FreeMarker的指令。至于user、latestProduct.url和latestProduct.name的具体内容则来自于数据模型(data model)。数据模型由程序员编程来创建,向模板提供变化的信息,这些信息来自于数据库、文件,甚至于在程序中直接生成。模板设计者不关心数据从那儿来,只知道使用已经建立的数据模型。
借助FMPP(FreeMarker PreProcessor)来运行FreeMarker
首先说明的是FreeMarker的运行并不依赖于FMPP。FMPP只是一个FreeMarker的辅助工具,有了它,我们可以快速地调试FreeMarker输出结果,而不需要借助Java编程,这可以大大地减轻美工设计人员的调试难度。你可以从:500)this.width=500'>http://fmpp.sourceforge.net/ 得到它。在使用Freemaker的时候,我们需要下载相关的程序:freemarker: 500)this.width=500'>http://freemarker.sourceforge.net/在磁盘上建立相关的文件夹:
D:/work/src/product.ftlD:/work/out/D:/work/data/product.tddD:/work/config.fmpp我们使用的配置文件(config.fmpp)设置如下:
sourceRoot: srcoutputRoot: outlogFile: log.fmppmodes: [ copy(common/**/*.*, resource/*.*) execute(*.ftl) ignore(templates/*.*, .project, **/*.xml, xml/*.*, *.js)]replaceExtensions: [ftl, html]sourceEncoding: gb2312data: tdd(../data/product.tdd)注意:"data: tdd(../data/product.tdd)" 指定了模板的数据源,TDD是fmpp支持的数据格式之一 ,关于TDD介绍可参阅fmpp文档,也可参看TDD。product.tdd内容是这样的:
{ user: "Big Joe" latestProduct: {url: "products/greenmouse.html", name: "Green Mouse"} }现在在dos下执行(假设FMPP安装在D:/FMPP下):
D:/work/>D:/FMPP/bin/fmpp最后的输出结果是这样的,存放在文件out/product.html中:<html><head> <title>Welcome!</title></head><body> <h1>Welcome Big Joe!</h1> <p>Our latest product: <a href="products/greenmouse.html">green mouse</a>!</body></html>
正如FreeMarker文档中所叙述的,FreeMarker的工作原理就是:模板+数据=输出!FreeMarker并不局限于生成html,甚至可以产生java代码,这仅仅取决于你如何设计模板而已。现在有了FMPP这个强大工具,我们接下来可以快速学习FreeMarker的相关指令。let us go! |
|
回复:FreeMarker 1 概述 软件技术
无名(游客)发表评论于2008/8/26 12:36:08 |
|
好 软件技术
huozhe(游客)发表评论于2007/4/11 16:08:15 |
|
» 1 »
|