这是一个有趣的问题,在各种消息组、推特甚至 IRC 上都经常出现。有几种方法可以评估 SproutCore 与 Cappuccino 的区别,但也许人们看到的一些直接的 caparisons 如下:
1) 他们各自的功能集
2) 易用性
3) 社区支持和文档
让我们看看第一点——有各自的功能集。通过“功能集”,有几种方法可以查看它。从他们拥有的 UI 小部件的数量来看;将事物连接在一起并与某种后端进行通信的基础支持;框架的一般架构方法,虽然不一定是“特性”,但仍然很重要;而且,是的,甚至是您可以使用的语言。
关于语言,我认为重要的是不要忽视正在使用的内容(JS 与 Obj-J)。为什么?因为收养和你来自哪里。 SproutCore 从 JavaScript 确实是 Web 语言的角度出发,因此您可以使用它来针对框架进行编程。 JavaScript 缺乏语言 OO 完整性(适当的对象-对象继承等)的地方,它在框架中弥补了(例如 MyApp.Foo = SC.Object.extend({...}))。卡布奇诺从不同的角度进来。他们使用 Obj-J 作为 JS 的主要语言增强,以注入 JS 缺少的语言特性;这而不是将这些语言功能直接注入框架(Cappuccino)本身。当然,正如 Cappuccino 的人们之前所指出的,您仍然可以使用 JS 来针对 Cappuccino 进行编程,但是,您会错过 Obj-J 提供的功能。卡布奇诺社区注意事项:如果我错了,请纠正我:-)。最后,如果您是已经熟悉 Obj-C 的人,那么 Obj-J 可能更适合您。嘿,甚至索尼现在显然也加入了整个 Obj-C 的潮流,以针对他们的移动平台进行开发:-P。
查看这两个框架的架构,他们都以一种或另一种形式查看了 Apple 的 Cocoa 框架以获取指导/灵感。 Cappuccino 完全把 Cocoa 放在心上,并且基本上移植了 Cocoas API。同样,如果您是使用 Cocoa 在 Apple 中开发应用程序的,那么您可能会有宾至如归的感觉。另一方面,SproutCore 从 Cocoa 中汲取灵感,感觉不错。至于纯架构,它们都遵循 MVC,它们都使用 Cocoa 样式的绑定,它们都有数据存储机制,并且它们都有各自的渲染和组合 UI 小部件/视图的风格。
对我来说,视图的呈现是一个特别重要的领域。这两个框架都有一定程度的抽象,以使您无需直接处理 CSS 和 HTML,即使最终它们必须呈现 Web 浏览器最终能够理解的内容。
在 Cappuccino 方面,它们完全从您那里抽象出 CSS 和 HTML。相反,您使用框架的各种渲染原语来“绘制”您的视图。由于这种抽象级别,Cappuccino 可以利用可用的最佳渲染方法,而不是在某种程度上将您与 CSS 和 HTML 耦合。
至于 SproutCore,可以这么说,您正在渲染更接近“金属”。在对视图进行纯渲染时,您会使用提供一定程度抽象的渲染上下文对象,但最终,您是直接注入 HTML 并添加类名以应用 CSS。即使您的视图已经被渲染并且您想要基于事件来操作视图的某些部分,您也可以直接访问 DOM 元素并操作它们的属性。根据您来自哪里,这可能看起来好或坏。适合那些习惯使用 CSS 和 HTML 并喜欢更直接地控制视图如何呈现和样式的人。如果您想根据浏览器允许的内容(HTML/CSS、SVG、HTML5 画布等)一般地渲染视图以使用最佳渲染方法,那就不好了。但是,请注意,未来计划使 SproutCore 具有更抽象的渲染方法,但如果您愿意,仍允许您直接使用 HTML 和 CSS。所以你最终会得到两全其美的。
现在,至于这两个框架附带的库存 UI 小部件/视图——它们都有很多开箱即用的功能,可以让您继续前进。按钮、标签、列表、分段视图、单选按钮、滚动条等——它们都在那里。因此,可以肯定地说你在两个阵营都很好。
回到过去,现在让我们讨论一下易用性。对我来说,易用性是基于您使用 JavaScript、HTML、Obj-C、Cocoa、其他 MVC 框架、文档和社区支持的个人经验。如果您从未使用过 Cocoa,或者从未构建过类似桌面或 iPad 的应用程序,那么可以公平地说,无论您选择哪种框架,您都会有一些学习曲线。话虽如此,您不知道和想学习的内容可以通过每个框架各自的社区和文档获得。两者都有一个活跃的社区,所以如果你被困在某个地方,你也不会被冷落。至于医生,无可否认,卡布奇诺占据了上风。缺少 SproutCore 的文档,但代码库至少有完整的注释。 SproutCore 社区完全了解需要更新的文档,目前正在处理中,因此请继续检查。
最后,您提到了对这两个框架的长期预测。众所周知,摩托罗拉购买了 Cappuccino 框架,所以你肯定有一家大公司支持它的增长和长寿,或者至少现在看起来是这样。至于 Apple 和 SproutCore,我个人不能代表它们,但 Apple 并不拥有该框架。有许多公司和各种个人都以某种方式使用并回馈该框架。由于框架开发的更加有机的性质,这可能会让一些人和公司暂停或让那些正在关注 SproutCore 的人感到不适,但我不认为这是一个问题。我的感觉是这两个框架都会存在很长时间,尤其是现在越来越多的人正在考虑使用开源框架开发下一代桌面和 iPad 应用程序。而且,嘿,框架之间的竞争是好的——让每个人都保持各自的警觉:-)。
希望这些信息能帮助您做出决定!
干杯,
迈克