Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SproutCore vs.卡布奇诺_Javascript_Model View Controller_Cappuccino_Sproutcore_Objective J - Fatal编程技术网

Javascript SproutCore vs.卡布奇诺

Javascript SproutCore vs.卡布奇诺,javascript,model-view-controller,cappuccino,sproutcore,objective-j,Javascript,Model View Controller,Cappuccino,Sproutcore,Objective J,除了Javascript和Objective-J的语言差异之外,卡布奇诺在您的体验中比SproutCore和Objective-J有哪些好处 就长期预测而言,SproutCore是否因为得到苹果的支持而比卡布奇诺更“受支持” 我正试图在两者之间做出选择。我对JavaScript和Objective-C都很熟悉。来自卡布奇诺网站: “在现有框架的另一端是像SproutCore这样的技术。虽然SproutCore的目标与卡布奇诺相似,但它采取了截然不同的方法。它仍然依赖于HTML、CSS、JavaS

除了Javascript和Objective-J的语言差异之外,卡布奇诺在您的体验中比SproutCore和Objective-J有哪些好处

就长期预测而言,SproutCore是否因为得到苹果的支持而比卡布奇诺更“受支持”


我正试图在两者之间做出选择。我对JavaScript和Objective-C都很熟悉。

来自卡布奇诺网站:

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

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


因此,Cappuccino似乎没有/不需要任何构建工具,完全将浏览器从开发人员那里抽象出来开发人员应该知道DOM是什么。

这是一个有趣的问题,并且在各种消息组、twitter甚至IRC上经常出现。有几种方法可以评估SproutCore和Cappuccino,但是,人们可能会看到以下一些直接的结论ing:

1) 它们各自的功能集
2) 易用性
3) 社区支持和文件

让我们看一下第一点——有各自的功能集。通过“功能集”,有两种方法来看待它。从它们拥有的UI小部件的数量;连接事物并与某种后端通信的基础支持;框架的一般架构方法,尽管不一定是“功能”“,但仍然很重要;而且,是的,甚至是你能使用的语言

关于语言,我认为重要的是不要忽略正在使用的东西(JS和Obj-J)。为什么?因为收养和你来自哪里。SproutCore的观点是,JavaScript确实是web语言,因此您可以使用它来针对框架编程。JavaScript缺乏语言OO完整性(适当的对象继承等),它在框架中弥补了这一缺陷(例如MyApp.Foo=SC.object.extend({…}))。卡布奇诺是从另一个角度来的。他们使用Obj-J作为JS的主要语言增强,以注入JS缺少的语言特性;这并不是将这些语言特性直接注入框架(Cappuccino)本身。当然,正如卡布奇诺的同事们之前所指出的,您仍然可以使用JS对卡布奇诺进行编程,但是,这样一来,您就错过了Obj-J提供的功能。卡布奇诺社区注意:如果我错了,请纠正我:-)。最后,如果你已经熟悉Obj-C,那么Obj-J可能更适合你。嘿,就连索尼现在显然也在跳上整个Obj-C潮流,针对他们的移动平台进行开发:-P

从这两个框架的架构来看,他们都以某种形式研究了苹果的Cocoa框架,以获得指导/灵感。卡布奇诺完全把可可放在心上,基本上移植了可可豆原料。再说一次,如果你是从使用可可粉在苹果开发应用程序而来的,那么你可能会有宾至如归的感觉。另一方面,SproutCore则从可可中汲取灵感,让人感觉不错。至于纯体系结构,它们都遵循MVC,都使用Cocoa风格的绑定,都有数据存储机制,都有各自的呈现和组合UI小部件/视图的风格

对我来说,视图的呈现是一个特别重要的领域。这两个框架都有一定程度的抽象,以避免您直接处理CSS和HTML,即使在一天结束时,它们必须呈现给web浏览器最终理解的内容

在卡布奇诺方面,他们完全从您那里抽象出CSS和HTML。相反,您可以使用框架的各种渲染原语来“绘制”视图。由于这种抽象级别,卡布奇诺可以利用可用的最佳呈现方法,而不是在某种程度上与CSS和HTML耦合

至于SproutCore,可以说渲染更接近“金属”。在对视图进行纯呈现时,可以使用提供一定程度抽象的呈现上下文对象,但最终需要直接注入HTML并添加类名以应用CSS。即使在渲染视图并希望基于事件操纵视图的某些部分之后,也可以直接访问DOM元素并操纵其属性。取决于你来自哪里,这可能看起来是好是坏。对于那些习惯于使用CSS和HTML,并且喜欢更直接地控制视图的呈现和样式的人来说,这很好。如果您希望根据浏览器允许的内容(HTML/CSS、SVG、HTML5画布等)使用最佳的渲染方法来对视图进行常规渲染,则该选项不正确。但是,请注意,将来有计划使SproutCore具有更抽象的呈现方法,但如果您愿意,仍然允许您直接使用HTML和CSS。因此,你最终会两全其美

现在,对于这两个框架附带的stock UI窗口小部件/视图,它们都有很多现成的功能,可以让您继续使用。钮扣
var foo = [];
[foo addObject:"bar"];
foo.push("2nd push");
var value = foo[0];
var value2 = [foo objectAtIndex:0];

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