Я использовал SproutCore в прошлом. Мне был поручен проект по разработке сценариев автоматизированного веб-тестирования с использованием инструмента Selenium RC. Selenium RC был создан для нацеливания на обычные HTML-идентификаторы и классы, но SproutCore компилирует идентификаторы элементов так, чтобы идентификаторы элементов были псевдослучайными, поэтому мне пришлось выяснить API для SproutCore, чтобы я мог извлечь идентификаторы элементов из дерева представления.
SproutCore имеет близкую аналогию с компиляторами. Если у вас слишком много элементов, которые вы импортируете, создавая для своей веб-страницы, есть вероятность, что у вас возникнет коллизия пространства имен по идентификаторам, если вы будете создавать свое приложение с помощью jQuery. Когда вы создаете веб-страницу с помощью jQuery, все идентификаторы HTML-элементов являются глобальными. Нет такой вещи как локальная область видимости как в скомпилированном, так и в интерпретируемом языке.
SproutCore завершает управление HTML-контентом для вас. Представления создаются с использованием JavaScript, а затем компилируются. Если вы пройдете учебник по SproutCore (и я согласен, что у SproutCore нет документации, поэтому вам следует избегать его для бизнес-приложения), вы увидите, что в вашем готовом проекте есть элементы идентификатора «sc - ###». Конфликты пространства имен разрешаются на сайте, что дает вам возможность работать быстрее.
Тем не менее, есть серьезные проблемы. Их документация не достаточно хорошо объясняет, почему люди должны ее использовать. Проект с открытым исходным кодом, но копание вашего пути вниз, чтобы понять JavaScript нижнего уровня для того, как строятся представления, становится болезненным. Javascript - это функциональный язык, но я просто нахожу что-то не так с динамическими функциональными языками. Просто слишком много гибкости. Я подключаю Scala.
Последний выпуск SproutCore может быть медленным. Но это цена, чтобы заплатить