本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7591107
建立时间: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!


阅读全文(9133) | 回复(2) | 编辑 | 精华
 


回复:FreeMarker 1 概述
软件技术

无名(游客)发表评论于2008/8/26 12:36:08

总算找到个FMPP的用法介绍了


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 



软件技术

huozhe(游客)发表评论于2007/4/11 16:08:15

通俗易懂,非常受益,谢了

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.406 second(s), page refreshed 144767294 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号