Sproutcore和Ember之间的区别

时间:2012-02-24 04:16:09

标签: sproutcore ember.js

在Ember从sproutcore分叉之前,我选择了sproutcore作为框架。我不确定哪条路可走,而且由于碎片造成的工作明显稀释而有点沮丧 - 因为很少会导致更好的事情。 Sproutcore 2.0(现在的Ember)的努力似乎正朝着模块化和重用其他javasript组件(jQuery)的正确方向发展,但是从外部观点来看,为什么这两项努力必须分裂......真的不清楚我们有模块化代码和小部件库模块吗?

主要问题是:

  1. 这两项努力之间的有效区别是什么?
  2. 分裂的历史是什么?
  3. 什么是sproutcore未来,现在在哪里?
  4. Ember会发展成为sproutcore的完全替代品吗?

2 个答案:

答案 0 :(得分:80)

作为一个同时拥有Sproutcore应用程序和Ember应用程序的人,我会接受你的问题(为了清晰起见,我们会重新订购)。所有这些都是我在没有内部知识的情况下观察到的。有点推测,所以我在这个答案上启用了维基模式,这样更有见识的人可以纠正细节。

分裂的历史是什么?

以下是我拼凑的内容:

SproutCore由Charles Jolley的公司Sproutit创建,作为2007年Mailroom产品的基础.Jolley后来加入Apple,Sproutcore用于构建Mobile Me的原始网络应用程序。其任务是重新创建Mac应用程序(如Mail和iCal)的体验,并且今天在iCloud上继续使用Sproutcore。

Jolley离开Apple并在旧金山成立了一家名为Strobe的公司,其愿景部分是利用Sproutcore。 Strobe的团队认为Sproutcore不能很好地适应许多Web 2.0用例,并且对于开发人员来说太过于一个全有或全无的命题,因此他们开始向Sproutcore 2努力.Sproutcore 2的目标是模块化,以及更多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人才。在此之前,包括Katz和Dale在内的一些Strobe员工分拆成了一家名为Tilde的新公司。

Tilde决定继续开发Sproutcore 2,但更改名称(到Amber.js然后是Ember.js)和项目目标。他们放弃了与Sproutcore向后兼容的长期目标。他们放弃了对任何类型的视图小部件库的支持,并专注于HTML / CSS用例,并将数据绑定与Handlebars模板语言紧密集成。

自Strobe解散以来,Sproutcore 1.x的管理工作已从Jolley转移到Tyler Keating,社区已经重新关注清理Sproutcore 1.x,这个想法在一段时间内处于一个不舒服的地方Sproutcore 2正在逼近。

这两项努力之间的有效区别是什么?

项目的相似之处在于它们具有非常相似的对象模型。它们也有类似的属性,观察者和绑定系统。

Sproutcore包含一个视图小部件库,如工具栏,列表视图,网格视图,按钮和主题系统,以及通过Javascript定义视图层和由库管理的绝对定位。它非常适合在网络上创建桌面式应用程序。

Ember占地面积较小。它与Handlebars紧密集成。对于许多项目来说,它是Backbone的替代品。它旨在为客户端应用程序提供标准的应用程序架构,并消除样板代码。

这些差异可能会导致框架出现分歧,尽管已经考虑采用相同的核心。在那种情况下,Sproutcore将使用Ember的“金属”库以及其他核心库。

什么是Sproutcore的未来,它现在在哪里?

这个帖子距离最近的贡献者的聚会有几分钟的时间。

https://groups.google.com/group/sproutcore/browse_thread/thread/aacf00a6047a866e#

短期路线图的重点是巩固营销材料,演示和代码库。该团队最近发布了Sproutcore Showcase。关于使用基于Javascript(node.js)的解决方案替换Abbot(用于Sproutcore的Ruby构建工具)的普遍共识,该解决方案现在正在积极开发中。还希望减少来自Apple等公司和更频繁发布的代码的“大”合并。 Sproutcore 1.8最近发布了。

Ember会发展成为sproutcore的完全替代品吗?

不太可能。 Ember核心团队已明确表示他们无意亲自开发这些缺失的功能。社区成员可能将这些项目作为单独的项目进行开发 - flame.js是迄今为止最雄心勃勃的尝试。 Ember的设计选择使其更容易与jQuery UI等项目集成,因此可能需要或可能不需要完全替换。

答案 1 :(得分:13)

1)官方线是Sproutcore用于RIA,Ember.js用于“网络风格”应用程序。所以,当你看到iCloud时,想想Sproutcore,当你看到Twitter时,就会想到Ember.js。

从技术角度来看,Ember.js专注于更加模块化的代码,所谓的“语义模板”用于视图。 Sproutcore更加单一。

2)我不确定是否有人真的知道。如果看一下时间线,Charles Jolley就离开了Apple,成立了一家名为Strobe的公司,该公司开发了一个用于应用程序开发的全栈平台。 Strobe聘请了Yehuda Katz和其他人,他们开始致力于减肥SC,以便在移动设备上运行得更好。大约一年后,Yehuda离开了公司Tilde公司,一个月后,Facebook以广泛认为的人才收购方式收购了Strobe。

如此解释。

3)这是一个很好的问题。 Recently there was a meetup and several things were discussed。讨论的要点是:

  • SC还活着并且踢着
  • 改进文档(我们已​​经听过一段时间了)。
  • 将好的部分保留在SC2开发后引入的代码中,并摆脱或转移到可选模块的其他东西(如模板)
  • 新的基于javascript的构建工具
  • 全新的基于画布的视图层,称为Blossom。
  • SC的某种基础/企业支持

可能还有其他我错过了

4)绝对不是替代品,尽管你可以使用任何框架来构建任何应用程序(毕竟这是所有的javascript)。