Хтось використовував Sproutcore?


19

Хтось використовував Sproutcore для веб-програми? Якщо так, чи можете ви дати мені опис свого досвіду? Зараз я це розглядаю, але у мене є кілька проблем. По-перше, документація погана / неповна, і я боюся, що я витрачу багато часу на розгадку речей або перекопування вихідного коду. Також я трохи не вагаюся використовувати проект, який є відносно новим і може зазнати значних змін.

Вдячні за будь-які думки людей, які розвинулися в програмі Sproutcore!

EDIT / PS: Так, я бачив цю публікацію: /programming/370598/sproutcore-and-cappuccino . Однак мене цікавить трохи довший опис самого Sproutcore від того, хто використовував його для значного проекту.


2
Я не можу відповісти на питання, але можу сказати вам, що Apple сама використовує SproutCore для власних сервісів .Mac. Так що для цього принаймні достатньо зрілий.
Чак

Так - саме це викликало мій інтерес. Але з тим, що я мало пробував, документація є досить поганою (особливо, наприклад, для SC.DataSource і SC.Store), що я не впевнений, чи варто цього клопоту.

Відповіді:


20

Ми використовуємо паросток більше року.

Спочатку я розробив версію 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

Просто перегляньте публікації групи проростків у групах Google, щоб відчути, що відбувається.

Деякі тижні тому хтось скаржився на документи, будучи новачком, і в основному те, що він отримав: "якщо вам це не подобається, чому б вам не допомогти створити документи" ... ну так!

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

Sproutcore не рекламує, хто використовує їхні рамки в дикій природі: зазвичай це не є гарним знаком.

Стверджується (не від самого паротка afaik), що Apple використовує його, але якщо придивитися, ви побачите, що Apple має власну кодову базу.

Я особисто виявив, що проросткову коробку переповнюють помилки, відсутність простого перегляду таблиць, що дратує, неповні чи непрацюючі приклади, а також відсутність документації та навіть відсутність повних ТЕСТІВ - це не є гарною базою для створення.


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 РІШЕННЯ, оскільки це прекрасна архітектура високого рівня і має гарну вбудовану систему складання

Наш головний список:

  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, що працює на локальному веб-сервері. Перегляньте збірний файл у зразку додатка паростків, щоб побачити, як це працює.
  • Проксі-сервер, включений у sc-serve, досить обмежений. Якщо у вас виникли проблеми із запитами рівня ваших даних, дайте sc-build, тоді розгорніть на локальному веб-сервері спробу замість проксі. Ми знайшли проблеми з нашими ланцюжками аутентифікації 401 та потоковою передачею великих відповідей набору даних (збитої кодування).

Навіть якщо ви не маєте наміру використовувати SproutCore у виробничому додатку, ви зобов’язані його вивчити далі, щоб побачити потужний підхід до програмування додатків javascript - особливо KVO та mixins (аспекти). Багато чудової архітектури, над якою розмірковувати та вчитися.

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


2

Раніше я використовував SproutCore. Мені було призначено проект з розробки автоматизованих сценаріїв веб-тестування за допомогою інструменту під назвою Selenium RC. Selenium RC був побудований для націлювання звичайних HTML-кодів і ідентифікаторів і класів, але SproutCore збирає ідентифікатори елементів так, що ідентифікатори елементів є псевдо випадковими, тому мені довелося розібратися в API для SproutCore, щоб я міг витягнути ідентифікатори елементів з дерева перегляду.

SproutCore має близьку аналогію з компіляторами. Якщо у вас занадто багато елементів, які ви імпортуєте, створюючи для своєї веб-сторінки, є ймовірність зіткнення простору імен з ідентифікаторами, якби ви збирали свою програму з jQuery. Коли ви будуєте свою веб-сторінку за допомогою jQuery, всі ідентифікатори елементів HTML - глобальні. Не існує такого поняття, як місцевий обсяг, як у складеній чи інтерпретованій мові.

SproutCore закінчує керування вмістом HTML для вас. Перегляди створюються за допомогою JavaScript і потім компілюються. Якщо ви пройдете підручник SproutCore (і я погоджуюся, що SproutCore не вистачає в документації, тому ви повинні спробувати уникнути його для ділового додатку), ви побачите, що ваш готовий проект містить елементи ID "sc - ###". Зіткнення простору імен вирішуються на веб-сайті, що дає вам можливість працювати швидше.

Однак є основні проблеми. Вони в документації не працюють досить добре, пояснюючи, чому люди повинні її використовувати. Проект є відкритим кодом, але перекопуючи свій шлях вниз, щоб зрозуміти JavaScript нижчого рівня для того, як побудовані погляди стають болючими. Javascript - це функціональна мова, але я просто знаходжу щось не так з динамічними функціональними мовами. Просто занадто велика гнучкість. Я підключаю Скалу.

Останній випуск. SproutCore може бути повільним. Але це ціна, яку потрібно платити

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.