【问题标题】:Vaadin vs. BootstrapVaadin 与 Bootstrap
【发布时间】:2012-03-14 22:31:43
【问题描述】:

我计划制作一个应用程序,该应用程序在客户端具有复杂表单和逻辑验证的视图。我打算使用 AJAX 进行提交并具有一些视觉吸引力。

我希望有使用 Bootstrap 和/或 CoffeeScript 和 Vaadin 开发经验的人推荐。我有两个选择:

  • 使用 Bootstrap / CoffeeScript 和一些用于服务器站点的框架,例如 Play Framework、Rails 或 Django
  • Vaadin

我关心的标准与客户端 JavaScript 和/或 HTML5 验证以及使用 Bootstrap 编写的 CSS 和 HTML 代码中可能出现的复杂性有关。在一个实际的 ria 应用程序中是否值得在 Vaadin 上使用 CoffeeScript?我看到有很多人选择了 Bootstrap,我相信他们有他们的理由。

帮助我做出决定。一些相关文档也可能会有所帮助。

【问题讨论】:

  • 我的两分钱:Vaadin 在服务器端使用大量内存(如 JSF),所以如果您有很多客户端,可能很难扩展......

标签: java javascript ajax web vaadin


【解决方案1】:

Vaadin

Vaadin 是一款非常出色的工具,用于构建以纯 Java 开发并通过常规 Web 浏览器交付的交互式桌面样式 Web 应用程序。

好处

Vaadin 6、7 和 8 应用程序完全在服务器端运行。由 Vaadin 自动安装到用户浏览器窗口中的 JavaScript 库:

  • 根据服务器端应用程序的指示在屏幕上绘制。
  • 将用户操作(单击、键入等)反馈给服务器,以供应用程序考虑和响应。

因此没有“客户端的逻辑验证”或“html5 验证”,至少从 Vaadin 应用程序开发人员的角度来看是这样。 Vaadin 框架可能会在其内部实现中暗中这样做,但这不是我作为 Vaadin 应用程序开发人员关心的问题。这就是 Vaadin 的核心优势:我不在乎 Vaadin 如何将我的表单放到用户的屏幕上。作为 Vaadin 应用程序开发人员,我不会编写任何 JavaScript、HTML、DOM、CSS 或 AJAX。只是纯Java。

样式类似于Swing:实例化一个layout(一个表单),添加labels,添加buttons,添加fields,添加other widgets。根据需要附加validators。嵌套额外的布局,用于复杂的表单。所有这些都在服务器端的内存中执行,全部使用纯 Java。最后告诉布局展示自己。噗,就像魔术一样,Vaadin 告诉浏览器显示该形式的相似之处。

如果您想开发恰好通过 Web 浏览器部署的桌面风格的商业风格应用程序,Vaadin 是一个很棒的工具。

权衡

权衡包括:

  • 服务器端占用大量内存和 CPU。
  • 放弃对 HTML/CSS/JavaScript 的控制。

缩放

您的网络应用程序位于服务器上,而不是客户端上。您所有的业务逻辑,用户输入的数据,所有用户表单的内部表示,例如表格中的行项,所有这些都存在于服务器上。乘以用户数量。这意味着 Vaadin 应用程序可能需要大量内存和 CPU 使用率。

这可能会限制扩大规模。但考虑到 64 位 Java、多个内存和多个内核,即使是在最底层的机器上(例如 Mac mini,),扩展可能仅对最大/最繁忙的应用程序来说是一个问题。

即使在那些罕见的大型/繁忙应用程序中,也可能有一些方法可以在 Vaadin 中处理缩放。所有的应用程序都存在于一个 Servlet 会话中。一些 Web 基础架构允许此类会话状态在服务器之间移动,甚至可以持久化到存储中以供其他服务器获取。

或者您的应用可能会很好地扩展。已经完成了对 11,000 个并发客户的模拟。见:

对 HTML、CSS、JavaScript 的控制

如果您的团队对传统的 Web 应用架构更加熟悉或经验丰富,那么 Vaadin 可能不适合您。在 Vaadin 中,您完全用纯 Java 编写应用程序,Vaadin 会自动将其转换为 HTML、CSS 和 JavaScript。

您可以稍微调整一下 CSS。即使不接触 CSS,如果您希望覆盖默认值,Vaadin 的“主题”(ValoReindeer)也可以让您对颜色、大小和字体进行大量控制。但是要知道 Vaadin 在生成 HTML 和 CSS 方面处于“驾驶座”;你只是被允许进行少量“后座驾驶”的乘客。

如果您的目标不是开发桌面风格的应用程序,如果您想要完全控制 HTML/CSS,那么 Vaadin 可能不适合您。


更新

Vaadin 8 发布

2017 年 2 月 22 日,Vaadin 8 was released。最大的改进是利用现代 Java 特性重写了数据模型和数据绑定 API,例如具有类型参数和 lambda 表达式的泛型。此外,内存和 CPU 效率更高。

Vaadin 7 发布。

虽然架构与 Vaadin 6 大致相同,但 7 比以往任何时候都更好。见:What's New

【讨论】:

    【解决方案2】:

    我会选择 Rails 3.2 + Bootstrap + Backbone.js,我们在这里使用的堆栈。

    • Rails:不错的社区,稳固的平台,非常易于开发,可以部署到 Heroku(上帝保佑 Heroku)。
    • Bootstrap 2.0:符合 HTML5、开箱即用的良好功能、良好的社区(只需查看他们的 github 页面)、合理的 js 插件。
    • Backbone.js:非常适合客户端繁重的应用程序,与堆栈的其余部分(特别是 jQuery)配合得很好,在正确使用时提供良好的用户体验,不显眼。特别适用于动态表单,因为您可以使用专用视图(自动完成、包含多个项目的表格、相关选择框等)重构大量代码。

    关于文档,Rails 和 Bootstrap 都是一流的,你可以找到很多关于它们的书籍。 Backbone.js,尽管用户基数大,专业性更强,但还是可以在网上找到很多不错的截屏视频和电子书(我推荐peepcode和thinkbot的作品)。

    祝你的应用好运!

    PS:使用 Rails 的另一个好处是您可以使用的一组 gem 和插件。全文搜索?太阳黑子。审计和版本控制?纸轨。 BDD?黄瓜。我建议您查看 Ruby Toolbox 网站。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 2014-09-13
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      相关资源
      最近更新 更多