以前用过服务端的echo框架,感觉挺好使的,它可以在服务器上生成html,
然后返回给浏览器。开发人员不需要了解html和javascript,就可以开发出
web应用。在服务端使用的也都是类似于swing的API。唯一的缺陷是每个
动作都要重新刷新一下页面,对ajax的支持比较滞后。虽然后来搞过echo和
extjs的结合(Echo3Ext20),不过毕竟不是一家人,诸多困难,后来只好放弃这个框架。
说了这么多前奏,才开始说说vaadin。我用的是Vaadin 7。Vaadin也有不短的历史,
最近关注是因为它也有个server框架,和echo很类似,但它不是每次都生成整个html
页面,而是有大量的ajax支持,因此不会再出现echo当中频繁刷新页面的情况。而且
它的文档非常完整,甚至都有一本书 Book of Vaadin 。同时,还有eclipse的插件
来支持开发,总得来说还是很方便的。
当然,Vaadin还有个和gwt结合的client框架,不过我对这个的兴趣不大,因为我们
现在用smartgwt,感觉很不错,就没必要去整vaadin了。
按照Vaadin的文档,安装eclipse的插件,可以很容易就创建一个vaadin的项目,
同时,很容易就把Hello world给启动起来。它的服务端入口就是一个 UI 的子类,
类似于gwt的概念,然后在 UI 子类里面把content填充进去,非常简单。
@Theme("runo") public class SimpleUI extends UI { @Override protected void init(VaadinRequest request) { getPage().setTitle("Test"); final VerticalLayout layout = new VerticalLayout(); layout.setMargin(true); layout.setSizeFull(); setContent(layout); LoginPanel panel = new LoginPanel(); layout.addComponent( panel); } }
它也有Theme的概念,换肤也挺方便,对css的支持也很好。总的来说,
只要熟悉swing/gwt,用vaadin可以很快的上手。而且不存在gwt的编译
过程,部署起来也容易些。如果只是用它来做一些小的项目开发,还是
一个不错的选择。
由于它本身是个server框架,因此不存在gwt里面的异步调用问题,对于
新手来说,也比较容易理解。开发人员可以把它当swing来使用,所有的
数据操作都是在服务器上,这也是一个非常不错的特性,也是我们当年用
echo所体会到的最大的一个好处。
vaadin的layout稍显复杂,不如echo那么简单。可能是不太熟悉的原因,
要不停的尝试各种设置。幸好它有个所见即所得的编辑器,使得这个工作
稍微简单一些。不过后来发现复杂的页面,还是手工写来的更快,用所见
即所得编辑器还是太费劲。
接下来,就是最关注的表格功能。vaadin的表格非常简单,简单到连分页
这种最常见的需求都没有原生的实现,而是要安装一个插件。虽然从这点
来看,有插件体系还是不错的,至少可扩展性很强。但是插件的另一个问题
就是,代码质量和使用习惯都不一致,因此使用起来还挺麻烦的。而且在
使用PagedTable的过程当中,发现页面总数总是不对,而且上一页下一页的
翻页也经常出现问题。很无奈。
用到这里,只能一声叹息,默默放弃。其实还是个不错的框架,但是对于
Table的支持很弱,象SmartGWT那么强大的表格,不知道要到第几个版本
才会有。先放一放吧。