Кто-нибудь использовал Sproutcore?


19

Кто-нибудь использовал Sproutcore для веб-приложения? Если да, можете ли вы дать мне описание вашего опыта? Я в настоящее время рассматриваю это, но у меня есть несколько проблем. Во-первых, документация плохая / неполная, и я боюсь, что потрачу много времени на то, чтобы разобраться или покопаться в исходном коде. Кроме того, я немного не решаюсь использовать проект, который является относительно новым и может претерпеть значительные изменения.

Любые мысли от людей, которые развились в Sproutcore приветствуются!

РЕДАКТИРОВАТЬ / PS: Да, я видел этот пост: /programming/370598/sproutcore-and-cappuccino . Однако меня интересует более длинное описание самого Sproutcore от того, кто использовал его для значимого проекта.


2
Я не могу ответить на вопрос, но могу вам сказать, что Apple сама использует SproutCore для своих собственных сервисов .Mac. Так что, по крайней мере, он достаточно зрелый для этого.
Чак

Да - вот что меня заинтересовало. Но из-за того, что я мало пробовал, документация достаточно плохая (особенно, например, для SC.DataSource и SC.Store), что я не уверен, стоит ли это того.

Ответы:


20

Мы используем sproutcore более года.

Сначала я разработал с использованием версии 0.9, которая была превосходной, но имела проблемы с производительностью, связанные с KVO, большими наборами данных и т. Д. Но поскольку SproutCore - это Javascript (близкий к javascript), мы смогли решить их для нашего приложения. На самом деле, SproutCore научил меня правильному кодированию JavaScript. Я изучал Javascript и SproutCore одновременно.

Где-то в июле они выпустили предварительную альфа-версию SproutCore 1.0. API был значительно изменен, поэтому преобразование нашего приложения в более новую версию было само по себе проектом. И документация была нулевой в то время.

Теперь все изменилось, есть документация и очень хорошая вики. Новые учебники и документация добавляются каждый день.

Если вы думаете об использовании / оценке SproutCore, то это правильное время. И каждый день SproutCore поражает меня своими возможностями и мощью. Тем не менее, есть много грубых краев, что уменьшает каждый день.

Некоторые ресурсы:

SproutCore Wiki

API Документы

Недавнее дополнение для API хранилища данных (что является очень важной частью)


17

Я работал с компанией, использующей SC для их редизайна флагманских приложений. Вот мои мысли:

  1. Мне очень нравится макет MVC приложения SC. Это то, чего, как мне кажется, не хватает другим JS-фреймворкам. Их обязательная структура делает обновление взглядов несложным.

  2. Лучшая документация была в самом коде.

  3. Нужна лучшая документация / больше примеров. Их примеров достаточно для начала, но продвинутые вещи поставят в тупик большинство пользователей.

  4. Уровень доступа к данным слишком сложен. Это огромная загадка. Они должны действительно поддержать документацию или предоставить больше примеров, чтобы проложить путь, чтобы люди могли использовать его должным образом. С другой стороны, это действительно мощный, почти ORM-фреймворк.

  5. Мне нравится тот факт, что они стресс-тестирование.

  6. Отсутствие сетки - это настоящее препятствие. Многие, если не большинство приложений нуждаются в сетках. Тем не менее, SC представляет собой полнофункциональную инфраструктуру MVC, а не структуру списка виджетов (компонентов) EXTJS.

  7. Большая часть кода показалась слишком сложной. Каждый раз, когда метод становится длиннее 10-30 строк, он должен быть разбит на части для повышения читабельности.

  8. Возможно, самое большое соображение заключается в следующем: если вы работаете над проектом и рассматриваете SC, у вас будут реальные проблемы с поиском компетентных разработчиков для работы над ним. Таким образом, это может быть полезно для небольшого личного проекта, но вы рискуете с большим проектом, который будет нуждаться в обслуживании.

  9. Поддержка IRC была феноменальной. Ребята на этом канале действительно полезны.


1
Уровень доступа к данным слишком сложен. Это огромная загадка. - в самом деле. Кроме того, отладка - одна из чертовых задач.
c69

@ c69 - Когда я писал это, я в это верил. Но с тех пор я покопался и пришел к выводу, что хранилище данных достаточно мощное и не слишком сложное для понимания. Вам просто нужно начать с этим что-то делать
hvgotcodes

возможно в текущих выпусках, это правда - но я работаю с устаревшим SC, и это просто безумие .. (и это не обновляется, как кажется)
c69

@ c69, если у вас есть конкретные проблемы, задайте вопрос и, возможно, я смогу помочь
hvgotcodes

15

Просто просмотрите сообщения группы sproutcore в группах Google, чтобы понять, что происходит.

Несколько недель назад кто-то жаловался на документы, будучи новичком, и в основном он получил: «Если вам это не нравится, почему бы вам не помочь в создании документов» ... ну, да!

Вы увидите такие проблемы, так как это начало. Также несколько недель назад кто-то спросил группу, как создать гиперссылку, используя Sproutcore. Я имею в виду, LOL, очевидно, что создание простой гиперссылки занимает часы.

Sproutcore не рекламирует, кто использует их фреймворк в дикой природе: обычно это не хороший знак.

Утверждается (не самим sproutcore на самом деле), что Apple использует его, но если вы присмотритесь, вы увидите, что у Apple есть своя собственная кодовая база.

Лично я обнаружил, что sproutcore пронизан ошибками, отсутствием раздражающих простых табличных представлений, неполных или нерабочих примеров, а также отсутствием документации и даже отсутствием полных тестов - просто не очень хорошая основа для построения.


5
Я утверждал, что Apple использует это, и это от самого Apple. MobileMe написан с использованием SproutCore. appleinsider.com/articles/08/06/16/…
Чак

У Apple есть своя собственная кодовая база, но они регулярно объединяются с публичным репо.

Кроме того, в ответ на проблему с гиперссылками, SC создан для создания многофункциональных веб-приложений. Это означает, что вы обычно не трогаете DOM самостоятельно. В результате вы не собираетесь создавать свои собственные гиперссылки.

7

Я использую SproutCore, и это просто здорово. Мы перешли с jQuery на SproutCore , так как jQuery предлагает небольшой набор утилит, а SproutCore предлагает хорошую архитектуру высокого уровня.

Мы оценили эти библиотеки Javascript в следующем порядке:

  1. Прототип , который чувствовал себя хорошо, но jQuery имеет больше поддержки и книг и т. Д.
  2. jQuery , который был великолепен, но не имел поддержки хорошей архитектуры высокого уровня, и мы начали ее создавать, но это заняло слишком много времени.
  3. Капучино с хорошей архитектурой высокого уровня, но без дорожной карты и документации
  4. SproutCore THE SOLUTION, поскольку он предлагает хорошую архитектуру высокого уровня и имеет хорошую встроенную систему сборки

Наш топ-лист:

  1. SproutCore - ПОБЕДИТЕЛЬ
  2. JQuery - хороший инструментарий
  3. Капучино выглядит многообещающе, но пока не совсем
  4. Прототип в порядке, но, на мой взгляд, не так хорошо, как jQuery

Конечно, есть еще наборы инструментов, но мы оценили их. В заключение я настоятельно рекомендую SproutCore всем, кто разрабатывает приложения для настольных компьютеров с использованием Javascript. Если вам нужен простой Javascript, например, средства выбора даты и т. Д., Я рекомендую jQuery.

Еще один совет. На момент написания этого ответа SproutCore 1.0 была последней стабильной версией. К сожалению, он довольно старый, и мы используем последнюю версию, которую можно найти на странице Github SproutCore . Я очень рекомендую это.


4

Если вы пытаетесь войти в SproutCore, я рекомендую вам зайти в пример приложения SproutTweets. Многие из более мощных конструкций (состояния, динамически загруженные структуры, полезный пример источника данных) находятся там.

Вы можете найти приложение SproutTweets на github http://github.com/sproutit/sproutcore-samples/tree/master/apps/sproutweets/

  • Также помните, что запуск примера в Safari с помощью веб-инспектора дает более полезный набор сообщений об ошибках.
  • Sc-сервер содержит прокси, который можно использовать для доступа к вашему собственному источнику данных REST, работающему на локальном веб-сервере. Обратитесь к файлу сборки в примере приложения sprouttweets выше, чтобы увидеть, как это работает.
  • Включенный прокси в sc-serve довольно ограничен. Если у вас возникли проблемы с запросами уровня данных, выполните sc-build, а затем попытайтесь выполнить развертывание на локальном веб-сервере вместо прокси-сервера. Мы обнаружили проблемы с нашими циклами аутентификации 401 и потоковой передачей ответов большого набора данных (чанкированное кодирование).

Даже если у вас нет намерения использовать SproutCore в производственном приложении, вы обязаны изучить его дальше, чтобы увидеть мощный подход к разработке приложений на javascript - особенно KVO и миксин (аспекты). Много отличной архитектуры, чтобы обдумывать и учиться.

Последний пункт - канал IRC может быть гораздо более полезным, чем другие источники информации, уступая лишь некоторым глубоким погружениям в обсуждениях в группе Google.


2

Я использовал SproutCore в прошлом. Мне был поручен проект по разработке сценариев автоматизированного веб-тестирования с использованием инструмента Selenium RC. Selenium RC был создан для нацеливания на обычные HTML-идентификаторы и классы, но SproutCore компилирует идентификаторы элементов так, чтобы идентификаторы элементов были псевдослучайными, поэтому мне пришлось выяснить API для SproutCore, чтобы я мог извлечь идентификаторы элементов из дерева представления.

SproutCore имеет близкую аналогию с компиляторами. Если у вас слишком много элементов, которые вы импортируете, создавая для своей веб-страницы, есть вероятность, что у вас возникнет коллизия пространства имен по идентификаторам, если вы будете создавать свое приложение с помощью jQuery. Когда вы создаете веб-страницу с помощью jQuery, все идентификаторы HTML-элементов являются глобальными. Нет такой вещи как локальная область видимости как в скомпилированном, так и в интерпретируемом языке.

SproutCore завершает управление HTML-контентом для вас. Представления создаются с использованием JavaScript, а затем компилируются. Если вы пройдете учебник по SproutCore (и я согласен, что у SproutCore нет документации, поэтому вам следует избегать его для бизнес-приложения), вы увидите, что в вашем готовом проекте есть элементы идентификатора «sc - ###». Конфликты пространства имен разрешаются на сайте, что дает вам возможность работать быстрее.

Тем не менее, есть серьезные проблемы. Их документация не достаточно хорошо объясняет, почему люди должны ее использовать. Проект с открытым исходным кодом, но копание вашего пути вниз, чтобы понять JavaScript нижнего уровня для того, как строятся представления, становится болезненным. Javascript - это функциональный язык, но я просто нахожу что-то не так с динамическими функциональными языками. Просто слишком много гибкости. Я подключаю Scala.

Последний выпуск SproutCore может быть медленным. Но это цена, чтобы заплатить

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.