最近要做一个类CMS的系统,在选型的时候,由于之前用的Tapestry 4,所以,一开始打算用他的,但是4的pretty url做的不好,而且需要有个xml来写那些循环,binding之类的逻辑。所以,直接就pass,想看看5,虽然5的feature list里面列出了一大堆的新功能,而且号称速度提高不少,但他的view层居然又走回了之前jsp的老路,允许在页面里面写表达式,所以,也直接pass过去了,选了Wicket。
这里要说说为什么选Wicket。虽然,两个都是Component Based的框架,而且号称Component Based的框架不仅这两个,但是有一点,我觉得,可能大部分programmer都没有想清楚的就是,为什么我们需要Component Based的框架。理由其实很简单,我们要分离页面设计和后台的人,要分离,我们就要关注做页面的人都用啥工具,我想大部分做前台美工的人,用的都是dreamweaver之类的工具,所以,如果你在页面里面搁一堆表达式的话,他们会崩溃的,首先是看不到效果,其次给他们造成压力。Tapestry 4的时候,view层用的是html,这很好,Wicket现在也是用的html,这就很符合前台的人的习惯。Tapestry 5又改回去了,在页面上可以搁标签库和写表达式,所以,Tapestry 5我是看了Tutorial就直接pass过去的。
不过Wicket也有一个地方,我觉得不好的,虽然这也是他的一个卖点,就是你在class里面需要保持和在html里面一样的component order,他的解释是,这样能保证后台的人,能控制整套系统,不会因为前台的人动了个什么地方,整个系统就down掉。其实这个理由,看着挺好但是没啥用,把前后台的关系又拉紧了。我还是比较喜欢Tapestry 4里面,可以随意binding,而且多提供了可以不在页面上用,这样对前台的人来说就很自由了。