Vaadin与Bootstrap的比较

8
我计划制作一个具有复杂表单和逻辑验证的视图的应用程序,并在客户端使用AJAX进行提交,并且希望有一些视觉吸引力。我想听听那些有Bootstrap/CoffeeScript和Vaadin开发经验的人的建议,我有两个选择:
1. 使用Bootstrap/CoffeeScript以及一些服务器端框架,如Play Framework、Rails或Django 2. Vaadin
我关心的标准与客户端JavaScript和/或HTML5验证以及使用Bootstrap编写的CSS和HTML代码可能出现的复杂性有关。在实际的RIA应用中,使用CoffeeScript是否比Vaadin更值得?我看到有很多人选择了Bootstrap,我相信他们有他们的理由。
请帮我做出决定,一些相关文档也可能会有所帮助。

我的看法是:Vaadin在服务器端使用了大量的内存(就像JSF一样),因此如果您有很多客户端,可能很难进行扩展... - ndeverge
2个回答

19

Vaadin

Vaadin是一款非常优秀的工具,用于构建纯Java开发的交互式桌面风格的Web应用程序,并通过常规Web浏览器进行交付。

优势

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

  • 根据服务器端应用程序要求,在屏幕上绘制任何内容。
  • 将用户操作(单击、输入等)返回到服务器,以供应用程序考虑和响应。

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

这种风格类似于Swing:实例化一个布局(一个表单),添加标签,添加按钮,添加字段,添加其他小部件。根据需要添加验证器。对于复杂的表单,请嵌套附加布局。所有这些内容都在服务器端内存中执行,全部使用纯Java语言编写。最后告诉布局显示本身。Vaadin 像魔术一样让浏览器显示一个该表单的类似物。

如果您想开发桌面业务应用程序,并通过Web浏览器部署它们,Vaadin 是一个很好的工具。

权衡

权衡包括:

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

扩展性

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

这可能会限制扩展性。但是,有了64位Java、多个G的内存以及多个核心,即使是像Mac mini这样最低配置的机器,扩展也仅成为最大/最繁忙的应用程序的问题。

即使在那些更大/繁忙的应用程序中,Vaadin也有处理扩展的方法。所有应用程序都在Servlet会话中运行。某些web基础设施允许这种会话状态在服务器之间移动,甚至持久化到存储中以供其他服务器选择。

或者您的应用程序可能可以很好地扩展。已经进行了具有11000个同时客户端的仿真测试。请参阅:

对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发布。最大的改进是采用现代Java特性重新编写了数据模型和数据绑定API,如具有类型参数的泛型和lambda表达式。此外,内存和CPU利用更加高效。

Vaadin 7发布。

虽然架构与Vaadin 6基本相同,但Vaadin 7比以往任何时候都更好。详见:新特性


5
我会选择Rails 3.2 + Bootstrap + Backbone.js,这是我们在这里使用的堆栈。
Rails:社区友好、平台可靠、开发容易,可以部署到Heroku(上帝保佑Heroku)。
Bootstrap 2.0:符合HTML5标准,具有良好的开箱即用功能,拥有良好的社区支持(只需查看其github页面),合理的js插件。
Backbone.js:非常适合客户端重型应用程序,在与堆栈的其他部分(特别是jQuery)协作方面表现出色,当正确使用时提供良好的用户体验,不会妨碍。特别适用于动态表单,因为您可以使用专门的视图(自动完成、包含多个项目的表格、相关选择框等)重构大量代码。
至于文档,Rails和Bootstrap的文档都是顶级的,您可以找到很多关于它们的书籍。尽管Backbone.js拥有庞大的用户群,但它更为专业化,但您仍然可以在网络上找到许多优秀的屏幕录像和电子书(我推荐peepcode和thoughtbot的作品)。
祝你的应用程序好运!
另外,使用Rails的另一个好处是您可以使用一组宝石和附加组件。全文搜索?Sunspot。审计和版本控制?PaperTrail。BDD?Cucumber。我建议您查看Ruby Toolbox网站。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接