4

最近出现了几个用于编写基于 Web 的类桌面应用程序的框架。例如SproutCore卡布奇诺。你有使用它们的经验吗?你的印象是什么?我错过了其他一些框架吗?

我在 StackOverflow 上看到过相关 问题,但它们生成的大多是标准答案,例如“使用 jQuery 或 MochiKit 或 MooTools 或 Dojo 或 YUI”。虽然有些人给出了非标准的 答案,但他们似乎没有使用这个框架的经验。

任何人都可以分享为浏览器开发类似桌面的应用程序的真实经验吗?

4

8 回答 8

7

在我看来,卡布奇诺是不该做的一个例子。他们在 JavaScript 之上实现了另一种语言,这已经带来了速度缓慢,而浏览器开发人员已经在努力对抗,而且最糟糕的是,他们根本不依赖浏览器小部件,破坏了所有用户导航体验。例如,他们实现了自己的滚动条,主要缺点是无法再使用鼠标滚轮了!

我真的更喜欢 ExtJS 的方法,它为您提供丰富的小部件,同时使 UI 尽可能靠近浏览器。

于 2008-09-29T09:52:55.707 回答
6

由于这些高级框架对许多大型(例如:非平凡)应用程序造成的速度问题,我们只使用纯 jQuery。在我们的测试中,所有高级框架在有许多可拖动对象或许多放置目标的情况下,以及在屏幕上显示长列表(超过 1000 个条目)的情况下都会崩溃。

部分原因是 IE6 和 IE7 的问题(在 DOM 树达到一定复杂性后性能突然开始急剧下降),但部分原因是这些框架产生的开销。

所以我不会推荐任何高级框架。我的建议是使用 jQuery 并直接使用 DOM。

一些提高性能的技巧:

  • 在可能的情况下,在服务器上呈现 HTML。
  • 使 HTML 尽可能简单。
  • 避免在 DOM 树中有很多元素。
  • 避免递归表结构(IE 在相对较少的嵌套级别后突然停止显示它们)。
  • 从 DOM 树中删除不可见的元素。
  • 在更改它们之前从 DOM 树中删除它们,然后重新插入它们,而不是在它们在树中时更改它们。
于 2008-09-29T10:54:08.120 回答
3

作为 Gizmo,我也推荐 EXT JS。他们的许可证已更改,它可能不适用于所有人,但如果您想做台式机之类的事情,它仍然是一个不错的选择。

这是他们的桌面环境示例页面: http: //extjs.com/deploy/dev/examples/desktop/desktop.html

于 2008-09-29T10:41:34.687 回答
1

苹果正在证明 sproutcore 确实有效,尽管很难估计它的效果如何。目前,我使用自己开发的一组库构建 Web 应用程序,从我们的 Windows 软件套件中复制一组功能(但适用于 Web 界面)。到目前为止,我一直避免使用框架,特别是因为我不想要臃肿。这种方法的问题是我浪费了过多的时间来复制框架中已经存在的功能,而且我觉得随着时间的推移,我将接近类似于这些框架的东西。

正因为如此,我一直在尝试在 extjs 中实现一个 Web 应用程序,这是一次非常好的体验。性能非常好,并且易于开发,因为它们的组件集非常适合实际构建应用程序,而不仅仅是花哨的演示(Web 工具包中的常见问题)。如果您对构建类似桌面的 Web 应用程序感兴趣,我肯定会推荐它。

扩大规模的问题显然仍然存在,但老实说,我觉得在规模不那么重要的情况下使用工具包会更好,并且只在需要的地方回退到基本的 JavaScript(过早的优化是一切的根源邪恶的)。Extjs 可以在prototype 或jquery 之上分层,所以这种方法绝对可行。避免 DOM 中过多的内容通常是一种按需加载和卸载的方法。例如,extjs 网格类有一个第三方扩展,它允许通过巧妙地加载和卸载数据来滚动一百万行数据集。

于 2008-09-29T11:28:48.787 回答
1

如果您打算使用 Java,您可能会考虑使用GWT-Ext (在下面使用 Ext)可能是一个非常干净的解决方案。

于 2008-09-29T11:45:37.310 回答
1

我喜欢qooxdoo,虽然它采用 JS 的 OOP 方法而不是原型,但它是一个可靠的框架并且具有很多功能。

于 2008-09-29T11:55:15.883 回答
0

我对 SproutCore 或 Capuccino 没有任何经验。但是已经尝试在 Django 之上使用 Dojo 来完成此类工作。只能告诉你它很慢而且有问题。

于 2008-09-29T09:48:54.937 回答
0

extjs 可能会有所帮助。http://dev.extjs.com/deploy/dev/examples/

于 2010-11-26T09:27:12.977 回答