W przeszłości korzystałem z SproutCore. Przydzielono mi projekt opracowania zautomatyzowanych skryptów testujących za pomocą narzędzia Selenium RC. Selenium RC został zbudowany, aby celować w zwykłe identyfikatory i klasy HTML, ale SproutCore kompiluje identyfikatory elementów, dzięki czemu identyfikatory elementów są pseudolosowe, więc musiałem wymyślić API dla SproutCore, aby móc wyłowić identyfikatory elementów z drzewa widoku.
SproutCore ma ścisłą analogię do kompilatorów. Jeśli masz zbyt wiele elementów, które importujesz, tworzysz dla swojej strony internetowej, istnieje ryzyko kolizji przestrzeni nazw na identyfikatorach, jeśli miałbyś zbudować swoją aplikację za pomocą jQuery. Kiedy budujesz swoją stronę za pomocą jQuery, wszystkie identyfikatory elementów HTML są globalne. Nie ma czegoś takiego jak zasięg lokalny, jak w języku kompilowanym lub interpretowanym.
SproutCore kończy dla Ciebie zarządzanie treścią HTML. Widoki są budowane przy użyciu javascript, a następnie kompilowane. Jeśli przejdziesz przez samouczek SproutCore (i zgadzam się, że brakuje dokumentacji w SproutCore, więc powinieneś spróbować tego uniknąć w przypadku aplikacji biznesowej), zobaczysz, że twój ukończony projekt ma elementy identyfikacyjne „sc - ###”. Kolizje przestrzeni nazw są rozwiązywane w witrynie, co daje możliwość szybszej pracy.
Istnieją jednak poważne obawy. Ich dokumentacja nie wykonuje wystarczająco dobrej pracy, wyjaśniając, dlaczego ludzie powinni z niej korzystać. Projekt jest typu open source, ale kopanie w dół, aby zrozumieć javascript niższego poziomu, w jaki sposób budowane są widoki, staje się bolesne. JavaScript jest językiem funkcjonalnym, ale po prostu znajduję coś złego w dynamicznych językach funkcjonalnych. Po prostu jest za dużo elastyczności. Podłączam Scalę.
Ostatni numer. SproutCore może być powolny. Ale to cena do zapłacenia