当前位置: 首页 > 面试题库 >

威克特vs Vaadin

郜光明
2023-03-14
问题内容

我被Wicket和Vaadin所折服。我正在开始一个微型ISV,需要选择Web框架。我将选择范围缩小到Wicket和Vaadin。我已经使用了两个框架,并且我都喜欢它们。但是我需要做出选择。

如果我选择Vaadin:

  1. 我不必担心外观。它带有不错的主题。
  2. 我将使用Java进行所有擅长的编程,而不必花费时间来攻克不太擅长的CSS。
  3. 我需要的大多数业务应用程序组件都是开箱即用的,包括桌面之类的布局,工具提示,键盘快捷键,带有可拖动和可折叠列的表格等。

但是,如果我采用Vaadin方式:

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

如果我采用Wicket方式:

  1. 我将不得不对应用程序进行样式设置,几乎无法为它们提供桌面外观。

有什么建议吗?任何在这两个框架上都有经验的人都请告诉我我的利弊,以及如何做出决定。


问题答案:

我想我已经为这两个框架投入了一些时间。我真的很喜欢这两者,因为它们将类似Swing的编码引入了Web开发。而且我不知道对我来说更简单的(尽管有单击,但我不喜欢速度模板化的东西)

是的,有区别。

我不必担心外观,它带有不错的主题

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

我将使用Java做所有我擅长的编程,而不必花费时间来破解不太擅长的CSS。

然后,瓦丁会变得“更好”。

我将失去以声明方式创建UI的功能。

那有什么好处?(顺便说一句:您可以使用Groovy编写声明式代码;-)

但是没问题。我知道您的意思是:如果您可以努力工作,而不是聘请独立设计师,那是“更好”的选择。

我几乎不能给他们桌面外观。

为什么不?还是在这里是什么意思?Wicket支持ajax,并且有一些组件支持漂亮的“类似于桌面”的东西(ajaxlink,lazycomponent,自动完成,进度条,请参见wicket的东西和扩展名)。好的,对于任何更复杂的组件,您都必须在javascript中进行编码,但是BTW您是否知道甚至可以在wicket中使用GWT

一些小经验:

Vaadin在编码时肯定更快(没有CSS,HTML内容)。但是,如果要进行生产,请记住,编程的简易性可能会增加客户端的性能成本:例如,如果您使用“错误”布局(例如Horizo​​ntal
/ VerticalLayout),则…大量使用javascript可能会减慢速度旧浏览器。

但是Vaadin并不慢!使用适当的布局(例如CssLayout或FastLayout),并且旧的浏览器也可以使用它。(尽管如果您要使用CssLayout,则您的编码风格确实非常相似。)

Vaadin的一个问题是它很难配置,因为您不容易看到客户端需要所有CPU的位置,并且嵌套的divs获得了神秘的ID名称。

Wicket的一大优点是它的翘曲持久集成

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

使用Vaadin测试UI应该很容易(尽管我没有找到单元测试的东西),而使用wicket则非常容易。

最后但并非最不重要的是,与检票口相比,在Vaadin中创建列表/表非常容易。



 类似资料:
  • 问题内容: 我正在学习快速,并试图理解字典。我已经习惯了PHP,您可能会在其中编写以下内容… 在此示例中,将按以下顺序输出值:1、2、3 我的快速代码看起来像这样… 但是,值以意外的顺序出现。我可以做些干净的事情来保持值的创建顺序,还是不能对字典进行快速排序? 问题答案: 正如已经回答的那样,词典的要点是未排序。Swift(和Objective-C)中有三种类型的集合 数组是项目的有序列表。当项目

  • 我正试图使用Kryo库来执行对象的深度复制,但我遇到了一个小问题。我想深度复制一个没有瞬态变量的对象。我知道可以将用于,如下所示: 但是我必须为每个类设置一个新的。我可以从Kryo获得一个默认的,并在那里设置吗?我尝试了类似的解决方案,但它什么也做不到:

  • 问题内容: 什么之间的区别,以及何时该使用的呢? 例如,在Python中,如果我想打印字典,我只是,但是现在有2个其他选项。我应该如何以及何时使用它们? 问题答案: 一些区别: vs : 调试应用程序时,该功能在Xcode控制台中打印消息。 这是Swift 2中已删除且不再使用的变体。如果看到正在使用的旧代码,则可以安全地将其替换为。 回到Swift 1.x,没有在打印字符串的末尾添加换行符,而是

  • 问题内容: 为了在使用Swift时与C API集成,我需要使用sizeof函数。在C语言中,这很容易。在Swift中,我处于类型错误的迷宫中。 我有以下代码: 第二行显示错误“’NSNumber’不是’T.Type’的子类型”。为什么会这样,我该如何解决? 问题答案: 使用sizeof如下: 使用类型作为参数。 如果您想要变量的大小,可以将该字段传递给。 像这样: 或更简单地说(由user1020

  • 问题内容: NS和非NS类之间有什么区别?特别是vs ?是否代表围绕核心非功能性的某种包装器? 问题答案: Swift 3 为现有Foundation类类型引入了一些新的 覆盖值类型 ,例如for ,for 等。完整列表和详细信息可以在下面找到 SE-0069变异性和基础价值类型 一些原因是 提供适当的值语义, 而不是可变且不可变的变体, 更多的“ Swifty” API。 新的叠加层类型应提供相

  • 问题内容: 我一直在尝试实现单例,以用作我从网络上传到我的iOS应用的照片的缓存。我在下面的代码中附加了三个变体。我试图使版本2正常工作,但是它导致了我不理解的编译器错误,并希望就我做错的事情寻求帮助。变体1进行缓存,但我不喜欢使用全局变量。变体3并没有进行实际的缓存,我相信这是因为我在赋给var ic = ....的赋值中获得了副本,对吗? 任何反馈和见解将不胜感激。 谢谢Zvi 问题答案: 标