在Ember从 Sproutcore 派生之前,我选择了 Sproutcore 作为框架。我不确定该走哪条路,并且由于支离 splinter 而造成的工作明显稀释而感到沮丧-很少能带来更好的结果。 Sproutcore 2.0(现在为Ember)的工作似乎朝着模块化和重用其他javasript组件(jQuery)的正确方向发展,但是从外部的观点来看,实际上还不清楚为什么这两项工作必须分开……我们有模块化的代码,还有小部件库模块吗?
主要问题是:
最佳答案
作为即将在产品发布会上同时拥有Sproutcore应用程序和Ember应用程序的人,我将刺痛您的问题(为清楚起见,对其进行了重新排序)。以下所有内容都是我在没有任何内在知识的情况下所观察到的。有点是猜测,因此我在此答案上启用了Wiki模式,以便有更多知识的人可以更正详细信息。
split 的历史是什么?
这是我拼凑而成的:
SproutCore是由Charles Jolley的公司Sproutit于2007年创建的,作为其Mailroom产品的基础。Jolley后来加入了Apple,Sproutcore被用来为Mobile Me构建原始的Web应用程序。任务是重塑Mac应用程序(如Mail和iCal)的体验,而如今,iCloud仍在Sproutcore上继续努力。
乔利(Jolley)离开苹果,在旧金山成立了一家名为Strobe的公司,其愿景是部分利用Sproutcore。 Strobe团队认为Sproutcore不能很好地适合许多Web 2.0用例,并且对于开发人员来说是一个全有或全无的主张,因此他们开始致力于Sproutcore2。Sproutcore2的目标是模块化。 ,以及一种更具HTML意识的方法,该方法将使各地的Web开发人员都可以更容易地使用它。 Backbone 的早期牵引力是该分析的一部分。
在努力使Sproutcore代码库朝着这个愿景努力之后,Strobe团队决定从Sproutcore 2(内部代号Amber)开始重新设计。 Charles编写了核心的Run Loop和键值观察器代码。 Yehuda Katz和Tom Dale是该项目的首席Strobe开发人员。当时的愿景是Strobe和社区最终将移植从Sproutcore 1.x到Sproutcore 2的大多数功能。
Strobe的业务努力并未取得预期的结果,该公司权衡了选择权,最终决定通过Facebook收购Strobe人才。在此之前,Strobe的许多员工(包括Katz和Dale)已经分拆成立了一家名为Tilde的新公司。
Tilde决定继续开发Sproutcore 2,但更改了名称(分别为Amber.js和Ember.js)和项目目标。他们放弃了向后兼容Sproutcore的长期目标。他们放弃了对任何类型的 View 窗口小部件库的支持,而是将数据绑定(bind)与Handlebars模板语言紧密集成在一起,专注于HTML/CSS用例。
自从Strobe解散以来,Sproutcore 1.x的管理权已从乔利转移到Tyler Keating,并且社区重新将重点放在清理Sproutcore 1.x上,当Sproutcore 2的想法出现一段时间以来,这一直很不舒服迫在眉睫。
两者之间的有效区别是什么?
项目中的相似之处在于它们具有非常相似的对象模型。它们也具有相似的属性,观察者和绑定(bind)系统。
Sproutcore包括一个 View 小部件库,例如工具栏, ListView ,网格 View ,按钮和主题系统,并着重于通过Javascript和由库管理的绝对定位来定义 View 层。它在网络上创建 table 面样式的应用程序非常强大。
Ember 的足迹较小。它与 Handlebars 紧密集成。对于许多项目,它是Backbone的替代方案。它旨在为客户端应用程序提供标准的应用程序体系结构,并消除样板代码。
尽管有人考虑采用同一核心,但这些差异可能会导致框架出现分歧。在这种情况下,Sproutcore将使用Ember的“metal”库以及其他核心库。
Sproutcore的 future 是什么,现在要去哪里?
该线程距最近的参与者的聚会只有几分钟的路程。
https://groups.google.com/group/sproutcore/browse_thread/thread/aacf00a6047a866e#
短期路线图的重点是巩固营销 Material ,演示和代码库。该小组最近发布了Sproutcore Showcase。对于使用基于Javascript(node.js)的解决方案替代abbot(用于Sproutcore的Ruby构建工具),人们达成了普遍共识,该解决方案目前正在积极开发中。人们还希望苹果等公司减少代码的“大”合并,而发布频率更高。 Sproutcore 1.8是最近发布的。
Ember 是否会发展成为 Sproutcore 的完全替代品?
不见得。 Ember核心团队已经明确表示,他们无意亲自开发那些缺失的功能。社区成员可能会将它们作为单独的项目进行开发-flame.js是迄今为止最雄心勃勃的尝试。 Ember的设计选择使它更容易与jQuery UI之类的项目集成,因此完全替换可能有必要,也可能没有必要。