有人知道一个好用的JavaScript UI(Widget)库吗?

15

最近我需要开发几个web应用程序。我做了大量关于JavaScript UI库的研究,但是我还没有找到一个真正令我满意的。我所说的UI库是指提供用户控件(如按钮、组合框、网格、图表、布局等)的库...

到目前为止我发现的以及为什么我不完全满意:

  • jQuery UI 的控件太少。(我知道有很多插件和你几乎能找到所有东西,但这与由一个团队或小组制作和测试的完整库不同)
  • Dijit (Dojo)。我真的很喜欢这个库,但是当我尝试在我的网站中使用它时,总是会遇到麻烦。他们似乎不像其他库那样易于使用。
  • YUI 版本2有许多控件,但“新”的版本3仍然缺少许多控件。(或者我只是太笨了,找不到它们) 我不想同时使用两个版本,也不想使用即将被取代的旧版本。
  • DHTMLX 有许多控件,而且它们工作得非常好,但是这些控件本身缺少许多功能。(例如,HTMLEditor甚至不支持默认更改文本颜色,或者我找不到一种易于扩展/折叠树节点的动画方式)

如果有人知道一个我尚未尝试过的好库,或者知道我如何“更好地”使用上述库,我会非常高兴。我想知道为什么在这个时候(当web应用程序变得如此重要时),我仍然找不到一个完整的UI框架,它能提供与其他环境中已经存在多年(甚至几十年)的控件,比如Java、.net或Delphi等等。

编辑:

我知道不会有一个库包含我需要的所有控件,但我期望这样一个库至少具备以下特点:一致的界面风格、API、文档、验证以及业务应用/网站中最重要的控件(日期选择器、按钮、支持数值数据的编辑器、表格/树形控件、布局控件、HTML编辑器),并且能够创建自己的控件。如果有图表或报表功能就更好了。


这个关于 ExtJS 的问题在 SO 上的规范答案是:“Alternatives to ExtJS”。 - Dan Dascalescu
6个回答

9

Ext JS 提供了迄今为止最好的GUI小部件。我在一个大型内部网络项目中使用过它,完全满意。它可在GPLv3和商业许可下使用。

评估开源框架时一定要非常小心。它们往往会宗教般地推崇其项目的质量,但我发现文档质量差和有缺陷的代码普遍存在。Dojo声称有重要的工业参与,但他们的文档很差,而且在他们的网站上很容易找到错误(dijit示例页面有时候几个月都无法正常显示...)。


1
Ext JS 看起来非常不错 - 不知道为什么我以前没发现它。关于 Dojo,我注意到了同样的事情,但不想惹恼喜欢它的人。所以我只是写了我有麻烦 - 听起来更加得体 ;) - Preli
当我们选择在我们的内部项目中使用Ext JS时,这有一定的风险,因为另一个部门已经使用Dojo了一段时间(有很多内部专业知识)。几个月后...没有后悔。 - Josh Johnson
1
注意许可证问题。它一开始是“非原始设备制造商(OEM)”,然后在使用过程中变成“需要支付OEM版权费”。 - David Thielen
@JoshuaJohnson:Ext JS 不是免费的。 - kta
尽管Ext非常强大,但它并不适用于移动网站。因此,Sencha希望您使用Sencha Touch构建一个完全不同的网站。 当然,它是免费的。它有一个GPL开源版本(包括Ext和Touch)。 - Domi

7

你对JQueryUI的评论非常有意义。

正如你所说,JQueryUI提供了相对较少的控件,但有很多插件可用。但你正在寻找一个内置所有你想要的东西的单一库。

这是一个艰难的要求,因为我们实际上不知道你真正想要哪些小部件,哪些听起来不错但可能不会使用,或者哪些你会使用,但只有在它们按照你想要的方式工作时才会使用。

几乎不可能预测某个人可能想要的所有小部件,或者他们想要它们如何工作。即使给定的库确实完全正确,当你的需求稍微朝错误的方向变化时,你选择的库可能会变成一个错误的选择而不是正确的选择。

这就是为什么灵活性和可维护性比获得精确的功能匹配更重要。一旦你超出基本的小部件集合,大多数其他小部件都是建立在简单的小部件之上的,但每个人对它们应该如何实现都有自己的想法,并且每天都会想出新的UI概念。这就是为什么插件模型非常有效,也是我认为你不应该因为大多数小部件都可以作为插件使用而对JQueryUI不屑一顾的原因。实际上,我会说这个模型可能是最好的解决方案。

还有许多其他的库可用,你没有提到。Mootools和Prototype可能是最知名的,但也有其他的库。我不会列出所有的库,而是指向维基百科上的这个页面,其中以比较表格的形式列出了它们: http://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks

希望这对你有所帮助。但我怀疑你在列表中找不到任何包含你想要的所有小部件的库,所有的库都依赖于插件,因为库开发人员通常专注于制作小部件的框架,而不是小部件本身。


1
我已经想过我会得到至少一个这样的答案。当然你是对的。拥有这样的模块化框架有很多原因,但也有很多反对意见。1)你必须找到正确的插件 2)下载它 3)检查质量 4)看看它是否与您的jQuery版本保持最新和正常工作 5)熟悉API,因为不同的插件使用不同的方法6)确保它支持您的浏览器7)不同的发布周期...仅举几例(我只剩下100个字符)。我的个人偏好->更多控件,以便我可以更快地解决具体问题。 - Preli
那么,在这种情况下,我认为你不会找到你要找的东西。你提到了Java、.Net和Delphi,但它们都是非常大的桌面应用程序框架;由于媒介的限制,这种规模超出了基于浏览器的框架的范围。而且无论如何,所有这些示例实际上都有第三方小部件可以下载,因为即使它们也不能提供您可能需要的一切。如果你的老板看到一个新奇的小部件,而你的库不支持它,你会怎么做?等待你的库发布一个补丁或者找到一个插件? - Spudley
别误会:我非常喜欢jQuery(和jQuery UI),并且一直在使用它。我只是在寻找一个用户控件库,它提供了我每天需要的大多数控件。对于新奇的小部件,我仍然依赖第三方小部件 - 大多数情况下最好的是jQuery插件。 - Preli
1
一个模块化的框架架构和广泛的第一方小部件集合是正交问题。大多数JS框架具有模块化架构,但没有广泛的小部件集合(例如Jquery UI)。Ext JS两者都有。 - Josh Johnson
你能想象微软发布没有广泛控件库的WPF,或者没有完整小部件集的SWT吗?这将是一个噩梦,用于构建丰富的用户界面,而这正是今天网络上的情况。任何框架的存在,无论它有多好,都不能弥补缺乏完整功能集的标准小部件的不足。 - Samuel Rossille
显示剩余3条评论

5

有趣,我还没有听说过PrimeUI。你想把它添加到Alternatives to ExtJS维基答案中吗? - Dan Dascalescu

3

我现在已经使用KendoUI两年了,对我的选择非常满意。它具有强大的结构和易于使用的API。我曾经使用过其他库,如jQueryUI和基于jQueryUI的WimoUI,但它们与KendoUI不可比拟。我也研究过ExtJS。它看起来很棒,但使用起来有点困难。 - Mahmood Dehghan

2

1

SAPUI5 网页控件列表及示例源代码:


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