She*_*lam 46 javascript model-view-controller cappuccino objective-j sproutcore
除了语言差异Javascript vs. Objective-J Cappuccino在SproutCore中提供了哪些好处,反之亦然?
就长期预测而言,SproutCore是否比卡布奇诺更"支持",因为它得到了Apple的支持?
我想在两者之间做出选择.我熟悉JavaScript和Objective-C.
小智 65
这是一个有趣的问题,一个已经在各种消息群体,Twitter,甚至是IRC弹出相当频繁.有一对夫妇的方式来评价了SproutCore与卡布奇诺,但是,也许,一些即时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框架来看待这种或那种形式的指导/灵感.卡布奇诺将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的文档,但代码库至少得到完全评论.
最后,您提到了两个框架的长期预测.众所周知,摩托罗拉购买了Cappuccino框架,所以你肯定有一家大公司支持其增长和长寿,或者至少现在看起来像这样.至于Apple和SproutCore,我个人不能代表他们,但Apple并不拥有该框架.有许多公司和各种各样的人都以某种方式使用和回馈框架.由于框架开发的更有机性,这可能会让一些人和公司对那些正在查看SproutCore的人感到停顿或不安,但我不认为这是一个问题.我的感觉是两个框架都会存在很长时间,特别是现在更多人正在考虑使用开源框架开发下一代桌面和iPad应用程序.并且,嘿,框架之间的竞争是好的 - 让每个人保持各自的脚趾:-).
希望这些信息可以帮助您做出决定!
干杯,
麦克风
Me1*_*000 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
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我正在使用objective-j语法和js语法......如果这样,你可以想象它的力量.
最后我想提出的,只是为了确保没有混淆:在浏览器中解析objective-j.它不需要事先编译(尽管我们为您准备部署应用程序时提供了编译工具).
我认为有些人不必要地被客观j推迟,好像它是一些需要时间学习的怪物,而Objective-j为js添加了很多很棒的功能,实际上学习它们并不会真正带你如果你已经熟悉面向对象编程,那么一天中最好的部分,显然如果你来自可可,你将能够直接进入.