HTML5 UI框架

我在那里发现了很多HTML5 UI框架,比如:

  • 剑道
  • Wijmo
  • jqWidgets
  • 斑马
  • 煎茶
  • SproutCore的
  • YUI
  • XUI
  • 屏蔽UI

我有点不知所措。 看着他们中的一些,但几乎所有人似乎都太慢和重量级。

我感到有点困惑,我会学习哪一个。 他们的每个网站谈论他们的产品,就好像他们是最好的市场。 (明显的营销策略)。

作为Web应用程序开发和客户端JS UI框架的初学者, 你们,根据你的经验,哪一个你build议快速桌面Web应用程序开发考虑速度,部件集合,复杂性,看起来感觉,支持等?

你推荐我开始学习哪一个?

我知道可以有很多答案,每个人都可以更喜欢不同的答案,但是这可能有助于指导我一些,并且对一些最stream行的框架有一些批评。

你的问题有这么多,答案不容易,一点也不确定。 这也会很有见地。 看看你带来的框架列表,我看到了很不相同的东西,彼此难以比拟。 我会尝试以某种方式对它们进行分组,并将更多的框架添加到列表中。

这里的主要问题不是特定框架的利弊。 主要的问题是: 你想要多less? 你真的意味着像Gmail或Grooveshark应用程序? 或者你的意思是像Stackoverflow – 一个dynamic的,并不简单,但仍然是一个网站。 让我们考虑所有这些选项。

也许,你只是想用一些小部件来增强你的网站,比如标签,对话框,一些可拖放/可拖放的元素,文本编辑等等,你不想改变你的开发模式。 我的意思是,你使用你最喜欢的Java / PHP / Ruby,不希望在JavaScript中编写很多应用程序的逻辑和行为。 在这种情况下,基于jQuery的类似插件的解决scheme将为您做,尤其是jQuery UI和jQuery Mobile 。

jQuery小部件遵循其插件系统。 这通常意味着它们非常易于使用。 为了创build一个button,你写:

$('#myButton').button(); 

现在如果你想禁用它,你可以使用下面的模式调用一个方法:

 $('#myButton').button('disable'); 

获取或设置值,例如滑块或dateselect器,如下所示:

 $('#mySlider').slider('value'); $('#mySlider').slider('value', 42); 

如您所见,基于jQuery的解决scheme没有模型。 所有的数据保存在DOM中,并通过古怪的方法调用获得。 如果你需要dynamic地处理你的数据,例如做一些复杂的validation,在后台加载一些东西,过滤或者sorting,那么你会发现这很快就会变得混乱。 顺便说一下,这就是为什么jQuery UI团队还没有提供网格控制的问题 – 他们不能没有模型就做到这一点。 在jQuery Mobile中,您通过简单的标记获得了一个不错的移动用户界面,但是没有官方的方式在页面之间传递数据。

总结一下:如果你有一个多页的网站,如果你发布你的表单,那么使用jQuery UI或者像Twitter Bootstrap这样的打火机解决scheme。

也许,你想要构build更复杂,更类似于应用程序的东西(单页应用程序?)。 你知道你需要在客户端使用数据。 你有什么select呢?

您可以使用许多JavaScript框架之一,为您提供模型,数据绑定以及可能的其他创buildWeb应用程序的方法,并将它们与jQuery UI进行整合。 或者你可以使用更完整的框架,如Kendo或Wijmo或jqWidgets 。 这些框架依赖于jQuery(Wijmo依赖于jQuery UI)并提供额外的数据操作手段。 他们有一个数据模型。 Kendo实现了自己的解决scheme(我认为),而Wijmo和jqWidgets与stream行的Knockout JS集成。

所以Kendo和Wijmo属于提供小部件/控件和一些支持模型的框架组。 还有其他像这样的框架,不是基于jQuery的,比如Dojo Toolkit 。 添加一些dynamic数据加载,你会得到一个有点复杂的Web应用程序。 你还能想要什么?

其实,最重要的事情是被遗忘 – 你如何组织你的申请? 如果您尝试构build一个以REST方式与服务器通信的单页应用程序,那么如果您的应用程序没有架构,则很快就会陷入混乱。 通常需要的function是一些有关分离(MVC,MVVM),模板,路由和模块pipe理。 这是SproutCore和Sencha出现的地方。 他们为构buildWeb应用程序提供了一个全面的解决scheme,其中小部件只是一小部分。

SproutCore和Sencha可能看起来像是这里的赢家,因为它们是包含UI和业务逻辑的最完整的解决scheme,同时也构成了您的应用程序。 尽pipe所有的利弊,有一些缺点。 有人说,他们太重量级,或者需要坚持他们的发展模式,你可能不喜欢。 例如,在Sencha中,用JavaScript描述GUI,并使用Sencha的types系统。 这增加了一种沉重的感觉,有抽象和包装,而你真的很喜欢HTML,CSS和香草JavaScript的易用性。

但这不是唯一的方法。 networking的强大之处在于,有许多框架,库,工具, 更小更大的工具,这将帮助您按照自己喜欢的方式来制作应用程序。 例如,考虑AngularJS 。 它本身并不提供一套控制,但与Twitter Bootstrap结合成为RIA的完整解决scheme。 或者,例如,看看创build重量级SproutCore的人更轻量级的EmberJS 。 它也不会为您提供一组小部件,但在我看来,它是一个非常好的应用程序基础。

所以这是我最后的想法,而不是结论。 所有这些框架通常会向您显示它们的小部件集合,很好看的主题和其他视觉的东西。 但真正重要的是如何实际开发应用程序,如何构build应用程序,在哪里实现逻辑。 了解该框架提供了什么,并思考是否可以替代缺less的东西。

Infeligo的答案是一stream的。 我的经验可能会引起一些人的兴趣。 我使用Ruby on Rails作为我的大部分业务逻辑所在的服务器平台。

在前端,我使用dHTMLX,这是一个“对象”的JS库,其中最强大的是它的网格对象。 我的大部分应用程序都有商业/会计信息处理/显示要求,网格对象是我的主要工具。 然而,它们的对象集是全面的,包括在单个应用程序内创build额外的“窗口”以向最终用户提供MDItypes接口的能力。 我通常有一个login表单,当成功的应用程序打开一个单一的HTML页面顶部菜单。 根据菜单中的select,打开和closures新的窗口以显示/操作信息。 这些窗口在单个HTML页面的范围内。

所有的对象都有非常好的关联事件,我在前端使用这些事件进行了相当多的validation。 不过,我通常也重复Rails模型中的所有数据validation。 这是额外的工作,但我只是额外的谨慎。 还有一些抽象对象可以帮助连接前端可视对象(例如网格和后端服务器)之间的数据。 大部分数据连接可以使用XML或JSON完成。 我仅仅使用JSON来使用XML,是因为我对这个结构的经验以及Rails提供了一个体面的XML构build器的事实。 所以在我的情况下,我很less使用任何基于Rails的视图,因为我所有的可视对象都来自dHTMLX。

我喜欢dHTMLX的另一件事是他们的对象的速度。 例如,网格对象很容易以非常可接受的速度处理10,000多行。

该套件的大下图是它的文档。 该公司是东欧开发商,因此往往难以准确理解他们的文档意味着什么。 而且他们的文档往往不能完整logging所有的东西,所以在试错types的学习中浪费了大量的时间。

希望这可以帮助