Vaadin vs. Bootstrap

Car*_*nos 9 javascript java ajax vaadin web

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

我想要那些有使用Bootstrap和/或CoffeeScript和Vaadin开发经验的人的推荐.我有两个选择:

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

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

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

Bas*_*que 18

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:实例化布局(表单),添加标签,添加按钮,添加字段,添加其他小部件.根据需要附加验证器.嵌套其他布局,用于复杂的表单.所有这些都在服务器端的内存中执行,全都是纯Java.最后告诉布局展示自己.噗,像魔术一样,Vaadin告诉浏览器显示该形式的相似之处.

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

权衡

权衡包括:

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

缩放

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

这可能会限制扩大规模.但是,考虑到64位Java,多个内存,以及即使是最小Mac机器上的多个内核,扩展也可能仅适用于最大/最繁忙的应用程序.

即使在那些罕见的大/忙应用程序中,也可能有办法处理Vaadin中的缩放.所有应用都存在于Servlet会话中.某些Web基础结构允许此类会话状态在服务器之间移动,甚至可以保留到存储以供其他服务器选取.

或者您的应用可能会很好地扩展 已经完成了11,000个同时客户的模拟.看到:

控制HTML,CSS,JavaScript

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

你可以调整一下CSS.即使没有触摸CSS,如果你想覆盖默认值,Vaadin的"主题"(Valo,Reindeer)可以让你对颜色,大小和字体有很大的控制.但要知道Vaadin在生成HTML和CSS方面处于"驾驶员席位"; 你是乘客,只允许一点点"后座驾驶".

如果您的目标不仅仅是开发桌面式应用程序,那么如果您完全控制HTML/CSS,那么Vaadin可能不适合您.


更新

Vaadin 8发布

2017年2月22日,Vaadin 8发布.最大的增强功能是利用现代Java功能重写的数据模型和数据绑定API,例如带有类型参数和lambda表达式的泛型.此外,内存和CPU更高效.

Vaadin 7发布.

虽然与Vaadin 6大致相同的架构,但7比以往更好.请参阅:新功能.


mar*_*ann 5

我会使用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的另一个好处是你可以使用的宝石和插件集.全文搜索?太阳黑子.审核和版本控制?PaperTrail.BDD?黄瓜.我建议您查看Ruby Toolbox站点.