论坛首页 Java企业应用论坛

freemarker的优点-个人观点

浏览 9992 次
精华帖 (0) :: 良好帖 (9) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-28  
taglib、freemarker、jsf、Velocity 偶都用过,最后还是觉得frremarker用着最顺心,下面我就说说个人比较喜欢的优点:
1.freemarker是一个干净轻量的模板引擎,源代码结构也很清晰.
你可以直接写一个java main方法来调用它,我的代码生成器就是这么做的.
2.freemarker写出来的页面一般都是xml格式友好的,也就是说你可以写出很规范的xhtml,而且还可以直接使用一些xml的代码格式化工具直接美化.而且很容易发现其中缺少或者嵌套错误的tag
3. 个人觉得freemarker和taglib,jsf至少在使用层面上很像,但是freemarker的macro容易写,几行代码就搞定了,taglib和jsf需要写一堆java文件和tld文件,繁琐得很
4.freemarker不能直接调用java对象的method. 这点有些人认为这是个缺点,但是我不这样认为. 个人觉得对于一个view层的东西来说,你要做的就是把view展现好就行了,不要再view中调用业务方法. 以前在公司做产品和后来做项目时就一再和手下的coder强调这点,但是因为种种原因,大家都还是会偷懒,直接在view中调用.用了fm后就不一样了,现在你想在view中调用业务方法,那么你需要绕n个圈才能做到,还不如直接按照标准的mvc来做.
5.freemarker内置了很多web编程中很常用的方法. 例如js_string ,html_string, ${lastUpdated?string.short}, ${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")} 这些东西虽然都很小,但是胜在常用啊,而且用起来很方便
6. eclipse的插件很好用,可以代码提示自动完成. 当然现在只有jboss tools下的那个插件.不过那个插件开发基本停止了,而且维护人员特别官僚,我给他们报了好几个bug,而且还提供了对应的修改代码,结果他们非要我给他们提供patch文件,而且还要写对应的单元测试代码. 偶滴神啊,我只是写web的,eclipse的那套东西实在是不熟悉啊.
7. fm的macro的参数可以设置缺省值, 用起来很方便.

总之,我个人觉得fm还是大大提高了我的工作效率,我们团队的人用了都说很不错.只是好像现在用fm的人太少了,这个社区实在是太冷清了.
附件是我自己修改的freemarker插件,修改了一些小bug,喜欢的就下载用用,想了解详情的可以去jboss的问题跟踪系统里找找,我附上了源码的.

   发表时间:2008-10-28  
PS:

我用Freemarker的宏反复迭代出无限层菜单--(其实还是受你内存和屏幕大小的限制),那个代码叫干净啊。
1 请登录后投票
   发表时间:2009-04-10   最后修改:2009-04-10
我对FreeMarker最大的好感还在他可以直接输出表达式,还可以进行简单运算。相比velocity,这点改进太好了。
楼主有空能否对Lite XML的语法提提建议呢?
0 请登录后投票
   发表时间:2009-04-10  
下载了freemarker的插件,看起来比官网推荐的好。
用用试试看,谢谢楼主推荐的好插件!
0 请登录后投票
   发表时间:2009-04-10   最后修改:2009-04-10
删除掉..
写错了
0 请登录后投票
   发表时间:2009-04-10  
用FreeMarker有写脚本的感觉,改点什么一刷新就出来了,自身带的函数、表达式及指令非常周全,实在不满足需要时,只要写个macro就OK了。
我现在还把一些常用的,又不值得放到数据库中的分类信息用assign定义到util.ftl中了,可以很方便的使用。
比如:
<#-- 字形 -->
<#assign fontstyleMap={
    "0":"常规",
    "1":"斜体",
    "2":"粗体",
    "4":"下划线",
    "8":"粗斜体"
}>

使用FreeMarker有一个非常不好的地方就是id的处理,数字型的,一旦超过3位,一定要使用 c 函数转一下,否则就会带上逗号分隔,如:38,383,838。吃了不少亏

用jsp有时候比较迷茫是自己写个tag整形,还是放到Action里处理好。还有就是在jsp里写代码的度也不好把握。
0 请登录后投票
   发表时间:2009-06-26  
我也是在jboss下的插件,貌似没有自动代码补全的功能
0 请登录后投票
   发表时间:2009-06-27  
我最喜欢的地方,就是他报错的位置非常准确,呵呵!
0 请登录后投票
   发表时间:2009-06-27  
netfork 写道

使用FreeMarker有一个非常不好的地方就是id的处理,数字型的,一旦超过3位,一定要使用 c 函数转一下,否则就会带上逗号分隔,如:38,383,838。

看一下freemarker的Configurable源码你就知道了,设置一下数值类型的格式
在struts2中在freemarker.properties中指定
number_format=#
0 请登录后投票
   发表时间:2009-06-30  
嗯,配置问题
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics