SproutCore与卡布奇诺

时间:2010-11-26 19:10:04

标签: javascript model-view-controller cappuccino sproutcore objective-j

除了语言差异Javascript vs. Objective-J Cappuccino在SproutCore中提供了哪些好处,反之亦然?

就长期预测而言,SproutCore是否比卡布奇诺更“支持”,因为它得到了Apple的支持?

我想在两者之间做出选择。我熟悉JavaScript和Objective-C。

5 个答案:

答案 0 :(得分:65)

答案 1 :(得分:16)

我想谈谈有关目标-J迈克尔的评论。

如果你下载到JavaScript而不是objective-j,你不会失去任何东西。实际上,这种区别很难实现,特别是在我们有免费桥接类的情况下(稍微更多)。

Objective-j实际上只是一个比js更薄的包装器。它提供了传统上作为语言特性实现的经典继承,sproutcore实现为框架特性,它还提供代码导入,访问器生成,静态作用域以及对消息传递的支持。

Objective-j实例变量可以通过传统的点语法访问,如果你想...我喜欢这样想:一旦你开始编写一个方法,你主要是编写JavaScript。也就是说,循环,变量,函数,闭包等都只是javascript。你不会丢掉任何东西,这正是语言的设计方式。

我们更进一步通过“免费桥接”我们的一些课程CPDate,CPArray,CPException,CPString以及我不记得的更多内容。免费桥接只是意味着CPArray是本机js数组,本机js数组是CPArray,因此您可以互换地使用两个方法和函数。

所以例如可以这样做:

var foo = [];
[foo addObject:"bar"];
foo.push("2nd push");
var value = foo[0];
var value2 = [foo objectAtIndex:0];

alert(value === value2); //true

正如你所看到的,我正在使用objective-j语法和js语法......如果这样,你可以想象它的力量。

我想要解决的最后一件事,只是为了确保没有混淆:在浏览器中解析objective-j。它不需要事先编译(尽管我们为您准备部署应用程序时提供了编译工具)。

我认为有些人不必要地被客观j推迟,好像它是一些需要时间学习的怪物,而Objective-j为js添加了很多很棒的功能,实际上学习它们并不是真的如果你已经熟悉面向对象的编程,那么你可以在一天中学到很多,而且如果你来自可可,你就可以直接进入。

答案 2 :(得分:4)

我写了一篇关于“cappuccino vs.sproutcore”的博客文章。这不是技术比较,而是比较其他有趣的数据。

http://elii.info/2010/11/cappuccino-vs-sproutcore/

答案 3 :(得分:3)

来自卡布奇诺网站:

“在现有框架的另一端是像SproutCore这样的技术。虽然SproutCore的目标与Cappuccino类似,但它采用了一种截然不同的方法。它仍然依赖于HTML,CSS,JavaScript,Prototype和全新的它还有一套独特的API。它还需要特殊的开发软件和繁琐的编译步骤。我们认为这是错误的方法。

使用Cappuccino,您无需了解HTML。你永远不会写一行CSS。您永远不会与DOM交互。我们只要求开发人员学习一种技术,Objective-J和一组API。此外,这些技术是众所周知且易于理解的现有技术的实现。开发人员可以利用数十年的集体经验来真正加快构建富Web应用程序的步伐。“

所以Cappuccino似乎没有/需要任何构建工具,并且完全将浏览器从开发人员中抽象出来。而在Sproutcore中你可以获得构建工具(例如开发服务器),开发人员应该知道DOM是什么。

答案 4 :(得分:3)

迈克尔科恩斯的答案几乎涵盖了所有内容,因为它非常详细。

过去3周我一直在努力做出决定。我已经阅读了网络上关于这两个框架的所有内容,并且我已经用两者编写了大量的源代码示例,但仍然无法做出决定。以下问题让我从一个框架跳到另一个框架,并继续让我的决定更加艰难。

  1. Sproutcore比卡布奇诺咖啡具有更好的数据存储API。

  2. Sproutcore比cappuccino目前更好地利用绑定。卡布奇诺也有kvc / kvo支持,但绑定尚未完全存在。例如,在sproutcore中,您可以非常轻松地实现带有绑定和ArrayController的增量加载,而另一方面,卡布奇诺不是那么简单。当然cappuccino提供了CPTableView DataStore api,它非常干净,并且可以实现类似的结果,而不是绑定。这是可可在核心数据之前做的事情。虽然卡布奇诺仍在不断地进行装订。

  3. 根据我个人的口味,卡布奇诺有更好的视角api。虽然我习惯于开发html和DOM,但我更喜欢完全抽象DOM并摆脱css的想法。

  4. 对我来说非常重要的一个问题是sproutcore中缺少一个好的TableView。目前SC.TableView处于alpha状态,根本不具备高性能。我不知道sproutcore中tableview的时间表。我试着询问irc sproutcore频道,但没有得到令人满意的答案。另一方面,卡布奇诺有一个很棒且非常优化的桌面视图。

  5. 我发现更多真实世界的应用程序使用cappuccino而不是sproutcore。还有一个非常好的全面应用程序,由卡布奇诺作为源样本提供,非常有帮助。查看http://githubissues.heroku.com/

  6. 尽管我没有Objective-c的经验,而且我更喜欢纯js语法,我可能会在我当前的项目中使用cappuccino,并希望sproutcore在将来能够提供更好的表格视图。