Wicket vs Vaadin

jos*_*hua 48 java ria wicket vaadin

我在Wicket和Vaadin之间挣扎.我正在开始一个微观的,需要选择Web框架.我已经缩小了对Wicket和Vaadin的选择范围.我使用过这两种框架,我喜欢它们.但是我需要做出选择.

如果我选择Vaadin:

  1. 我不必担心外观和感觉.它配有漂亮的主题.
  2. 我将用Java编写所有我非常擅长的编程,并且不必花时间去攻击不太擅长的CSS.
  3. 我需要用于业务应用程序的大部分组件都包括在内,包括桌面布局,工具提示,键盘快捷键,带有可拖动和可折叠列的表等等.

但是,如果我去Vaadin方式:

  1. 我将失去以声明方式创建UI的能力.
  2. 如果浏览器不支持JavaScript,我不会有后备功能 - 例如大多数非Webkit移动浏览器.
  3. Vaadin公司正在销售一些组件 - 例如JPAContainer,所以我不确定公司是否会致力于提供完整的开源框架.商业利益永远是第一位的.
  4. Vaadin应用程序主要用于Intranet.它们不太适合具有网络外观和互联网的互联网.

如果我走Wicket的方式:

  1. 我将不得不设计我的应用程序,我很难给他们一个桌面的外观和感觉.

有什么建议?任何有这两个框架经验的人都要告诉我利弊和专业人士以及你如何做出决定.

Kar*_*ell 31

我想我已经为这两个框架投入了一些时间.我非常喜欢这两个因为他们将Swing相似的编码带入了Web开发.我不知道对我来说更容易(虽然有点击但我不喜欢速度模板的东西)

是的,存在差异.

我不必担心外观和感觉.它有很好的主题

是的,但每个认真的公司都会以不同的方式设计其应用程序(除非您是原型设计)

我将在java中完成所有我非常擅长的编程,并且不必花时间黑客攻击css,这不是很擅长

然后Vaadin会"更好".

我将失去以声明方式创建UI的能力.

那有什么好处?(顺便说一句:你可以在groovy代码声明;-))

但是没问题.我知道你的意思:如果你可以努力一个单独的设计师而不是检票口是'更好'.

我几乎无法给他们一个桌面的外观和感觉.

为什么不?或者你的意思是什么?Wicket支持ajax,并且有一些组件支持很好的'桌面相似'的东西(ajaxlink,lazycomponent,autocompletion,progressbar,看wicket stuff +扩展).好吧,对于任何更复杂的组件,你必须在javascript中编码但是BTW你知道你甚至可以在wicket中使用GWT

一些小经验:

编码时Vaadin肯定更快(没有css,html的东西).但是如果你去制作,请记住,编程的简易性可能会降低客户端的性能成本:例如,如果你使用'错误'布局,如Horizo​​ntal/VerticalLayout,......大量使用javascript可能会变慢旧浏览器.

但Vaadin并不慢!使用适当的布局,如CssLayout或FastLayout,旧的浏览器也可以提供它.(虽然如果你使用CssLayout,你的编码风格实际上是类似于wicket.)

Vaadin的一个问题是它有点难以分析,因为你不容易看到客户端需要所有CPU的位置,嵌套的div会得到神秘的id-name.

关于Wicket的一个好处是它的经线持续集成

(Guice可以集成在Vaadin和Wicket中)

使用Vaadin测试UI应该很容易(虽然我没有找到单元测试的东西)并且使用wicket非常容易.

最后但并非最不重要的是,与wicket相比,Vaadin创建列表/表格非常容易.

  • 对上述评论采取后续行动:后来我改用了检票口,从那以后我再也没有回头.我遇到了vaadin UI布局的问题. (9认同)
  • 已经有一段时间了所以我记不太清楚了。我的面板具有表单视图、表格视图和组合视图(表格位于表格顶部)。我创建了按钮来切换视图。尽管遵循了教程上的说明,它仍然有效,但行为不可预测。有时需要很长时间才能过渡。我认为开发基于浏览器的应用程序的最佳方法是自己编写 HTML。所以我切换回检票口。我在使用三柱门时从未被逼入绝境。 (2认同)

Bjo*_*rnS 10

我和Wicket有过广泛的合作,但我没有任何与Vaadin的经历,所以这可能(有点)有偏见.

我推荐Wicket的原因显而易见,但你可能感兴趣的是Wickets的开放性.正如Gweebz正确指出的那样,Wicket使用基本的HTML标记作为其基础,因此任何结构或外观变化通常都是微不足道的.

就个人而言,我非常喜欢wicket工作的一个方面是前端演示和数据后端之间的流程,我们实现了Spring和JPA/Hibernate,这意味着前端的任何变化都可以转换回数据库基于Wickets模型的架构,只需一行代码.

我再也不能说Vaadin从来没有使用它,但如果你正在寻找开始的架构,我也建议你看看GWT.

  • "......,JPA等后端的东西很容易为两者提供.我不知道Wicket做了什么来支持它们,但是Vaadin包含了各种方法来集成它们,例如JPAContainer." - 这真的让我知道JPAContainer不能免费用于商业用途,除非你从制造vaadin的同一个人那里购买许可证.是不是你的目标是让你的框架尽可能好和完整?或者你的目标是让你的框架足够好以吸引开发人员,但也缺乏足够让开发人员在某些组件上花一些钱? - (5认同)
  • 免责声明:我是 Vaadin 团队的成员,我对 Wicket 确实了解不够,所以如果我有任何错误,请纠正我。我收集到的 Wicket 的编程模型与 Vaadin 非常相似。Spring、JPA 等后端内容都可以轻松使用。我不知道 Wicket 做了什么来支持这些,但 Vaadin 提供了各种集成它们的方法,例如。JPA 容器。另请查看即将推出的 Vaadin Spring Roo 插件。请参阅下面我的评论的其余部分。 (2认同)

hez*_*amu 9

(继续第一个Wicket相关答案的评论)

Vaadin和Wicket之间的主要区别在于如何编写UI组合和客户端代码.使用Vaadin,您通常可以在没有任何模板或HTML的情况下编写UI,并且您可以获得开箱即用的完全Ajax的UI.但是,如果您更喜欢模板方法,请使用CustomLayout,它就是这样做的.

很少需要客户端编码,但是当你使用基于Java的GWT时,IMO比手工编写Javascript要好得多.此外,使用GWT,您可以自动获得跨浏览器兼容的解决方案,而不必自己处理这些问题.

在比较框架时,您还应该查看社区活动和文档.与Vaadin一起,这两者都非常出色.另请注意Vaadin目录,它目前包含100多个非常有用的UI组件和其他插件.

  • 当插入Vaadin时,*可能*公平地提及您为IT Mill(Vaadin背后的公司)工作的事实.:) (6认同)
  • 啊,对不起,你在对另一个答案的评论中这样做了 (3认同)

Jes*_*ebb 7

我对每个人的经验都有限,但我更喜欢Vaadin.它为我正在开发的Web应用程序提供了更丰富的体验.我们卖给我们的主要好处是围绕我们的UI类编写单元测试是多么容易,确保组件在以预期方式进行交互时正确运行.对于Wicket来说这也是可能的,但在我的经历中它更难.

我还要提到任何一个框架都需要一些样式.Wicket以简单的旧HTML开始,Vaadin默认以类似MacOSX的主题开始,但几乎所有你编写的网络应用程序都需要至少一些自定义.考虑到这一点,自定义Wicket应用程序的CSS比Vaadin更容易,原因很简单,因为您控制了标记.Vaadin隐藏了你的标记并生成了具有奇怪ID和结构的元素,因此更难以自定义外观.在做出决定时记住这一点.


Cav*_*iro 5

我目前在 Wicket 工作,并在 Vaadin 工作过。我的观察很简短:

  • 瓦丁有权获得自由,但在我看来,并不是那么美丽。如果您需要支持、帮助、文档来解决您遇到的痛苦和棘手的问题,那么您就完蛋了,因为与 Apache Wicket 相比,您没有那么好的文档/社区。Vaadin 有人帮助你,但你必须付费。
  • 要在检票口编程,您需要成为一名强大的程序员。Vaadin 还需要良好的 Java 知识,但如果您愿意,您可以轻松地编写一些意大利面条代码(只是说,不做......);
  • Apache Wicket 真正将 Web 技术(Javascript、HTML 等)与框架技术(Java)分开。Vaadin 也尝试这样做,但 IMO 对此并不那么优雅和透明。

除此之外,我们正在讨论两种不同类型的框架,两种不同的方法,它们各有利弊,我建议您搜索和比较,看看什么真正适合您的需求。

编辑:哦,关于外观和感觉,例如你总是有Wicket Bootstrap