本话题讨论Click的设计原理和Click背后的原理,并希望阐明为什么
部分人选择了Click作为他们的web开发框架。
Click是一款时兴的JEEweb应用框架, 提供了一种简单的富客户端程序设计
风格。 click包含的主要特征如下:
简单易学
click被设计的很简单以便于学习, 新开发者在一天内就可上手并运行
出来。 这对技术层次跨度很大的开发团队是非常关键的。
向开发团队介绍Tapestry (2.3)时,我的经历是, Tapestry (2.3)非常复杂,
一般的程序员不容易学习。我曾经介绍使用Tapestry 的两个团队最终都放弃
了使用Tapestry ,返回继续使用Struts。
Click比struts容易学习很多。Struts框架, 本质上使用了简化的命令
模式设计思想,包含很多费解并容易使人糊涂的设计。
为了便于学习, click作为开源的框架有着丰富的文档,并包含了很多
可以运行的例子。
面向控件和页面设计
如果你曾经使用Swing, VB 或 Delphi 做过经典的GUI编程, 你会发现
JEE web设计中存在一些非常严重的错误。JEE web设计运行非常缓慢,复杂,
并有很多错误。
作为最早的JEE web设计框架之一的Struts提供了一种基于命令的设计
模式和一组jsp标签。不幸的是, 使用Struts你需将URLs映射到Actions,
还需使用ActionForms,这些特点本质上并没有为你的程序开发起到明显的
杠杆作用。
Tapestry 也是一款JEE web 框架, 它较早的引用了组件, 页面和基于编程
模型的事件等概念。 它较大的提高了生产率, 这也是当我们遇到开发桌面
应用需求常用的替代方案。
click的设计思路就是借鉴这种基于页面和组件的设计方法, 并使它变的更
更容易使用。
click提供了一种面向页面的设计,控件元件特征和基于编程的事件模型。
click包含40种左右的控件, 这些控件对应了大部分主要的HMTL元素。
click表单和控件提供了自动验证和页面呈现,使程序开发变得更加快速和
健壮。
Velocity
Click 使用Velocity引擎来呈现HTML。 Velocity有一组非常容易学习和使用的
简单指令集。 例如下面的指令集。
#if (!$session.order.lineItems.empty)
<table>
<tr>
<th>Name</th> <th>Quantity</th> <th>Total Price</th>
</tr>
#foreach ($lineItem in $session.order.lineItems)
<tr>
<td>$lineItem.name</td>
<td>$lineItem.quantity</td>
<td>$lineItem.totalPrice</td>
</tr>
#end
</table>
#else
No items have been ordered.
#end
你或许会对这些没有使用任何标签的代码所做的事情感兴趣。 Velocity的使用简单使它
成了click的首选。
请注意click的模板服务是可插入式, 你同样可以使用Freemarker或jsp在click中
呈现你个页面。
值得一提的是, 近年来jsp2.0及jsp El表达式也大大提高了jsp的可用性。