有人使用过Sproutcore吗?


19

有没有人将Sproutcore用于Web应用程序?如果是这样,您能给我介绍您的经历吗?我目前正在考虑,但我有一些担忧。首先,文档是不好的/不完整的,而且恐怕我将花费大量时间来弄清事物或挖掘源代码。另外,我对使用一个相对较新的项目可能会有所犹豫。

感谢Sproutcore开发人员的任何想法!

EDIT / PS:是的,我看过这篇文章:https : //stackoverflow.com/questions/370598/sproutcore-and-cappuccino。但是,我对某个用于重大项目的人对Sproutcore本身的描述加长了兴趣。


2
我无法回答这个问题,但是我可以告诉你,苹果公司本身将SproutCore用于其自己的.Mac服务。因此至少已经足够成熟了。
Chuck

是的,这就是我的兴趣所在。但是,尽管我做了很少的尝试,但是该文档已经足够糟糕了(尤其是对于SC.DataSource和SC.Store),我不确定是否值得这么做。

Answers:


20

一年之后,我们在使用发芽核心。

首先,我使用0.9版本进行了开发,该版本非常出色,但存在性能问题,涉及KVO,大型数据集等。但是由于SproutCore是Javascript(接近javascript),因此我们能够为我们的应用程序解决它们。实际上,对我来说,SproutCore教会了我正确的javascript编码方式。我同时学习Javascript和SproutCore。

他们在7月左右的某个地方发布了SproutCore 1.0 pre-alpha。API进行了重大更改,因此将我们的应用程序转换为较新版本本身就是一个项目。当时的文档为零。

现在情况发生了变化,有文档和非常不错的Wiki。每天都会添加新的教程和文档。

如果您想使用/评估SproutCore,这是正确的时机。而且,SproutCore每天都以其所包含的功能和力量使我惊叹。仍然有很多粗糙的边缘,每天都会减少。

一些资源:

SproutCore Wiki

API文件

数据存储API的最新添加(这是非常重要的部分)


17

我曾与一家使用SC进行旗舰应用程序重新设计的公司合作。这是我的想法:

  1. 真的很喜欢SC应用程序的MVC布局。我认为这是其他JS框架所缺少的。它们的绑定框架使更新视图变得轻而易举。

  2. 最好的文档在代码本身中。

  3. 需要更好的文档/更多示例。他们的例子足以使您入门,但是高级的东西会困扰大多数用户。

  4. 数据访问层太复杂。这是一个巨大的谜。他们需要真正支持文档或提供更多示例来铺平道路,以便人们可以正确使用它。另一方面,它似乎是一个非常强大的几乎ORM框架。

  5. 我喜欢他们强调测试的事实。

  6. 缺乏网格是真正的阻力。许多(如果不是大多数)应用程序都需要网格。也就是说,SC是功能齐全的MVC框架,而不是小部件(组件)列表EXTJS的框架。

  7. 许多代码似乎过于复杂。只要方法的长度超过10至30行,就应该将其拆分以提高可读性。

  8. 也许最大的考虑是:如果您正在从事项目并考虑SC,那么在寻找合格的开发人员进行项目方面将遇到真正的麻烦。因此,这对于小型的个人项目可能是好的,但是对于需要维护的大型项目,您将承担风险。

  9. IRC的支持非常出色。那个频道的家伙真的很有帮助。


1
数据访问层太复杂。这是一个巨大的谜。 - 确实。另外,调试是一项艰巨的任务。
2011年

@ c69-当我写这篇文章时,我相信了。但是从那以后,我开始研究并得出结论,数据存储区功能非常强大,并且不太难理解。您只需要开始使用它就可以了
hvgotcodes 2011年

也许在当前版本中是真实的-但我使用的是旧版SC及其疯狂。.(而且它似乎不可更新)
c69 2011年

@ c69,如果您遇到特定问题,请提出问题,也许我可以帮忙
hvgotcodes 2011年

15

只需浏览Google网上论坛的发芽论坛上的帖子,即可了解发生的情况。

几周前,有人抱怨这些文档,因为他是新手,所以基本上得到的是:“如果您不喜欢它,为什么不帮助创建文档”……好吧!

自成立以来,您将看到类似的问题。同样在几周前,有人问该小组如何使用Sproutcore创建超链接。我的意思是,哈哈,显然,创建一个简单的超链接需要花费数小时。

Sproutcore不会宣传谁在狂野地使用他们的框架:通常不是一个好兆头。

苹果声称使用了它(不是萌芽本身afaik所声称的),但是如果仔细观察,您会发现苹果拥有它自己的代码库。

我个人发现萌芽之心到处都是bug,缺少烦人的简单表格视图,不完整或无法正常工作的示例,缺少文档甚至没有完整的TESTS都不能作为良好的基础。


5
我声称苹果使用它,它来自苹果本身。MobileMe是使用SproutCore编写的。appleinsider.com/articles/08/06/16/...
查克

苹果确实有自己的代码库,但它们会定期与公共仓库合并。

另外,为响应超链接问题,SC用于创建富Web应用程序。这意味着您通常不会自己接触DOM。因此,您无意创建自己的超链接。

7

我正在使用SproutCore,这真是太好了。我们从jQuery切换到SproutCore,因为jQuery提供了一小部分实用程序,而SproutCore提供了很好的高级体系结构。

我们按以下顺序评估了这些Javascript库:

  1. Prototype,感觉还可以,但是jQuery有更多支持和书籍等。
  2. jQuery感觉很棒,但是它没有对好的高级体系结构的任何支持,因此我们开始构建一个,但是花了太多时间。
  3. 卡布奇诺(Cappuccino),它具有良好的高级架构,但缺乏路线图和文档
  4. SproutCore THE SOLUTION,因为它提供了一个不错的高级体系结构,并且它拥有一个不错的内置构建系统

我们的榜首:

  1. SproutCore是赢家
  2. jQuery是一个很好的工具包
  3. 卡布奇诺咖啡看起来很有前途,但还不存在
  4. 原型还可以,但我认为不如jQuery

当然,还有更多的工具箱,但这是我们评估的工具箱。总结一下,我强烈建议将SproutCore推荐给使用Javascript构建桌面类应用程序的任何人。如果您只需要一些简单的Javascript,例如日期选择器等,则建议使用jQuery。

再提一个小费。在撰写此答案时,SproutCore 1.0是最新的稳定版本。不幸的是,它已经很老了,我们使用的是最新版本,可以从SproutCore的Github页面中找到。我强烈建议您这样做。


4

如果您尝试使用SproutCore,建议您深入研究SproutTweets示例应用程序。许多更强大的构造(状态,动态加载的框架,数据源的有用示例)都在那里。

您可以在github http://github.com/sproutit/sproutcore-samples/tree/master/apps/sproutweets/上找到SproutTweets应用程序

  • 另外请注意,使用Web检查器在Safari中运行示例会提供一组更有用的错误消息。
  • sc服务器包含一个代理,可用于访问在本地Web服务器上运行的自己的REST数据源。请参考上面的budgetweets示例应用程序中的构建文件,以了解其工作原理。
  • sc-serv中包含的代理非常有限。如果您的数据层请求有问题,请进行sc-build,然后尝试在本地Web服务器上进行部署,而不是使用代理。我们发现了401身份验证循环和大型数据集响应流(分块编码)的问题。

即使您无意在生产应用程序中使用SproutCore,您也应该自己进一步探索它,以了解一种强大的javascript应用程序编程方法-尤其是KVO和mixins(方面)之类的东西。许多伟大的建筑值得思考和学习。

最后一点-IRC频道比其他信息来源更有帮助,仅次于google小组讨论中的深入探讨。


2

我过去使用过SproutCore。我被分配了一个项目,该项目使用名为Selenium RC的工具开发自动化的Web测试脚本。Selenium RC是针对常规HTML ID和类而构建的,但是SproutCore会编译元素ID,以便元素ID是伪随机的,因此我必须弄清楚SproutCore的API,以便可以从视图树中找出元素ID。

SproutCore与编译器非常相似。如果要导入的元素太多,那么如果使用jQuery构建应用程序,则ID上的名称空间会发生冲突。当您使用jQuery构建网页时,HTML元素的所有ID都是全局的。本地范围没有像编译或解释语言那样的东西。

SproutCore最终为您管理HTML内容。使用javascript构建视图,然后进行编译。如果您阅读了SproutCore教程(并且我同意SproutCore缺少文档,因此您应该尝试避免在商业应用程序中使用它),您将看到完成的项目具有ID元素“ sc-###”。网站上解决了命名空间冲突,使您有可能更快地工作。

但是,存在主要问题。他们的文档并不能很好地解释人们为什么要使用它。该项目是开源的,但是深入了解底层JavaScript来构建视图的方式变得很痛苦。Javascript是一种功能语言,但是我发现动态功能语言有些问题。灵活性太强了。我正在插入Scala。

最后一期。SproutCore可能很慢。但这是要付出的代价

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.