论坛首页 Java企业应用论坛

FreeMarker三宗罪!

浏览 230790 次
精华帖 (2) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (1)
作者 正文
   发表时间:2005-12-23  
robbin 写道

因此使用freemarker作为webwork的view,是没有问题的。但是如果使用freemakrer作为sitemesh的decorator的时候,还是有这个群集复制的问题。


我个人一直是使用freemarker view的,而且也不喜欢sitemesh这样的二次拼装的东西,总觉得有效率上的问题,不如freemarker自己直接生成来的方便。

一般,我会有一个common.ftl,里面定义一个像这样的macro
<#macro html title>
<html>
<head>
<title>${title?html}</title>
</head>

<body>
<#nested/>
</body>

</html>
</#macro>


也就是把改封装的封装都给它叻,然后每个页面这样都差不多是这样:
<#import "common.ftl" as c>

<@c.html title="标题">
这里是文本内容
</@c.html>

这样,虽然每个文件有这三行代码是固定不变的,但是换来的是页面的“组件”化和页面产生的效率。在我实际项目中,感觉是狠不错的。
1 请登录后投票
   发表时间:2005-12-23  
关注freemarker中。
1 请登录后投票
   发表时间:2005-12-23  
刚有准备学学freemarker的心,就看到了这篇帖子。看来要再比较一下了。
0 请登录后投票
   发表时间:2005-12-23  
FreeMarker在很多方面的确很方便,不过在有些方面也有问题。在View方面,我倒是觉得更加应该注意的是如何把HTML,CSS,JavaScript进行规范化,纯粹讨论FreeMarker的优点和缺点实际上讨论到最后就变成个人喜好问题了。

我一直是用JSTL的,感觉很方便。FreeMarker用了一段以后,实在受不了“第一宗罪”,改回了JSTL,但是也有N多人认为这正是它严谨的表现。

至于它的Session的问题,我不很明白的是为什么它要放到HttpSession里面去,其实倒是可以就这个问题好好讨论讨论。
0 请登录后投票
   发表时间:2005-12-23  
FreeMarker第一宗罪确实很讨厌,也许多用点tag可以避免大量的build-in的使用。

FreeMarker第二宗罪也是个问题,不过很少会碰到这种情况,即使碰到也可以用其他办法绕过。

FreeMarker自带的Servlet确实有第三宗罪的问题,不过直接使用FreeMarkerServlet是一个不好的方式,不建议使用。通常在配合Webwork/Spring MVC的时候,webwork/spring已经分别进行了封装,没有这个问题了。关于和sitemesh搭配的问题,webwork2.2提供了一个FreeMarkerPageFilter,解决了这个问题。

回过头了说说FreeMarker的优点:

1、简单易学易用
2、报错信息准确
3、macro功能强大,实现了页面组件的可重用性
4、不耦合Servlet,可以被打包到jar里面,实现web组件的重用

特别是第四条,如果做软件产品,或者扩展已有软件项目的功能,是非常有用的地方。

我收回我上面的决定,还是将FreeMarker进行到底。
0 请登录后投票
   发表时间:2005-12-23  
hongliang 写道
robbin 写道

因此使用freemarker作为webwork的view,是没有问题的。但是如果使用freemakrer作为sitemesh的decorator的时候,还是有这个群集复制的问题。


我个人一直是使用freemarker view的,而且也不喜欢sitemesh这样的二次拼装的东西,总觉得有效率上的问题,不如freemarker自己直接生成来的方便。

一般,我会有一个common.ftl,里面定义一个像这样的macro
<#macro html title>
<html>
<head>
<title>${title?html}</title>
</head>

<body>
<#nested/>
</body>

</html>
</#macro>


也就是把改封装的封装都给它叻,然后每个页面这样都差不多是这样:
<#import "common.ftl" as c>

<@c.html title="标题">
这里是文本内容
</@c.html>

这样,虽然每个文件有这三行代码是固定不变的,但是换来的是页面的“组件”化和页面产生的效率。在我实际项目中,感觉是狠不错的。


你还不了解sitemesh,建议了解一下,sitemesh实现的功能远远不是你这个自定义模板可比的。
0 请登录后投票
   发表时间:2005-12-26  
robbin 写道

你还不了解sitemesh,建议了解一下,sitemesh实现的功能远远不是你这个自定义模板可比的。


执行效率如何?
0 请登录后投票
   发表时间:2005-12-26  


hongliang 写道
robbin 写道

你还不了解sitemesh,建议了解一下,sitemesh实现的功能远远不是你这个自定义模板可比的。


执行效率如何?
0 请登录后投票
   发表时间:2005-12-26  
还可以啦,只不过有时会有一些奇怪的小问题
0 请登录后投票
   发表时间:2005-12-27  
chenqj 写道



REALLY??
0 请登录后投票
论坛首页 Java企业应用版

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