Czy ktoś używał Sproutcore?


19

Czy ktoś używał Sproutcore do aplikacji internetowej? Jeśli tak, czy możesz podać mi opis swojego doświadczenia? Obecnie rozważam to, ale mam kilka obaw. Po pierwsze, dokumentacja jest zła / niekompletna i obawiam się, że poświęcę dużo czasu na rozwiązywanie problemów lub przeglądanie kodu źródłowego. Poza tym nieco waham się przed użyciem projektu, który jest stosunkowo nowy i może ulec znaczącym zmianom.

Doceniamy wszelkie przemyślenia ludzi, którzy rozwinęli się w Sproutcore!

EDIT / PS: Tak, widziałem ten post: /programming/370598/sproutcore-and-cappuccino . Interesuje mnie jednak nieco dłuższy opis samego Sproutcore od kogoś, kto wykorzystał go do znaczącego projektu.


2
Nie mogę odpowiedzieć na pytanie, ale mogę powiedzieć, że sam Apple używa SproutCore do własnych usług .Mac. Więc jest przynajmniej wystarczająco dojrzały.
Chuck

Tak - właśnie to mnie zainteresowało. Ale z tym, czego niewiele próbowałem, dokumentacja jest wystarczająco zła (szczególnie na przykład dla SC.DataSource i SC.Store), że nie jestem pewien, czy warto.

Odpowiedzi:


20

Używamy sproutcore ponad rok.

Najpierw opracowałem przy użyciu wersji 0.9, która była doskonała, ale miała problemy z wydajnością, związane z KVO, dużymi zestawami danych itp. Ale ponieważ SproutCore jest JavaScript (bliski javascript), byliśmy w stanie rozwiązać je dla naszej aplikacji. Dla mnie SproutCore nauczył mnie właściwego sposobu kodowania javascript. W tym samym czasie uczyłem się Javascript i SproutCore.

Gdzieś w lipcu wypuścili SproutCore 1.0 pre-alpha. Interfejs API został znacznie zmieniony, więc konwersja naszej aplikacji do nowszej wersji była projektem samym w sobie. W tym czasie dokumentacja wynosiła zero.

Teraz wszystko się zmieniło, jest dokumentacja i bardzo ładne wiki. Nowe samouczki i dokumentacja dodawane każdego dnia.

Jeśli zastanawiasz się nad użyciem / oceną SproutCore, jest to właściwy moment. I każdego dnia SproutCore zadziwia mnie zawartymi w nim możliwościami i mocą. Nadal jest wiele szorstkich krawędzi, które zmniejszają się codziennie.

Niektóre zasoby:

SproutCore Wiki

Dokumenty API

Niedawny dodatek do interfejsu API magazynu danych (co jest bardzo ważną częścią)


17

Współpracowałem z firmą używającą SC do ich flagowego przeprojektowania. Oto moje przemyślenia:

  1. I naprawdę jak MVC układ aplikacji SC. Myślę, że jest to coś, czego brakuje innym frameworkom JS. Ich powiązanie sprawia, że ​​aktualizacja widoków jest bardzo prosta.

  2. Najlepsza dokumentacja była w samym kodzie.

  3. Potrzebujesz lepszej dokumentacji / więcej przykładów. Ich przykładami są wystarczające, aby zacząć, ale zaawansowanych rzeczy ogarek większości użytkowników.

  4. Warstwa dostępu do danych jest zbyt skomplikowana. To ogromna tajemnica. Muszą naprawdę wzmocnić dokumentację lub podać więcej przykładów, aby utorować drogę, aby ludzie mogli z niej właściwie korzystać. Z drugiej strony wydaje się być naprawdę potężny framework prawie ORM.

  5. Podoba mi się fakt, że przeprowadzają testy warunków skrajnych.

  6. Brak siatki to prawdziwy problem. Wiele, jeśli nie większość aplikacji, potrzebuje siatek. To powiedziawszy, SC jest w pełni funkcjonalnym frameworkiem MVC, a nie ramą listy widżetów (komponentów) EXTJS.

  7. Wiele kodu wydawało się zbyt skomplikowane. Za każdym razem, gdy metoda ma być dłuższa niż 10-30 linii, należy ją naprawdę rozbić, aby zwiększyć czytelność.

  8. Być może najważniejszą kwestią jest to: jeśli pracujesz nad projektem i rozważasz SC, będziesz miał poważne problemy ze znalezieniem kompetentnych programistów do pracy nad nim. Może to być dobre dla małego projektu osobistego, ale ryzykujesz dużym projektem, który będzie wymagał konserwacji.

  9. Obsługa IRC była fenomenalna. Faceci na tym kanale są naprawdę pomocni.


1
Warstwa dostępu do danych jest zbyt skomplikowana. To ogromna tajemnica. - w rzeczy samej. Ponadto debugowanie jest diabelskim zadaniem.
c69,

@ c69 - Kiedy to napisałem, wierzyłem w to. Ale od tego czasu wkopałem się i doszedłem do wniosku, że magazyn danych jest dość potężny i niezbyt trudny do zrozumienia. Musisz po prostu zacząć z tym coś robić
hvgotcodes

może w obecnych wydaniach jest to prawda - ale pracuję ze starszym SC i jego szaleństwem .. (i wydaje się, że nie można go aktualizować)
c69

@ c69, jeśli masz określone problemy, zadaj pytanie, a może mogę pomóc
hvgotcodes

15

Wystarczy przejrzeć posty grupy sproutcore w grupach google, aby sprawdzić, co się dzieje.

Kilka tygodni temu ktoś narzekał na dokumenty, będąc nowicjuszem, i zasadniczo dostał: „jeśli ci się nie podoba, dlaczego nie pomagasz w tworzeniu dokumentów” ... cóż, duh !!

Zobaczysz takie problemy od samego początku. Kilka tygodni temu ktoś zapytał grupę, jak utworzyć hiperłącze za pomocą Sproutcore. Mam na myśli, LOL, najwyraźniej stworzenie prostego hiperłącza zajmuje godziny.

Sproutcore nie reklamuje, kto korzysta z frameworka na wolności: zwykle nie jest to dobry znak.

Twierdzi się (nie przez sam sproutcore afaik), że Apple go używa, ale jeśli przyjrzysz się uważnie, zobaczysz, że Apple ma własną bazę kodów.

Osobiście odkryłem, że sproutcore jest pełen błędów, brak prostego widoku tabeli irytujących, niekompletnych lub niedziałających przykładów, a także brak dokumentacji, a nawet brak kompletnych TESTÓW, nie jest po prostu dobrą bazą do budowania.


5
Twierdziłem, że Apple go używa i pochodzi od samego Apple. MobileMe jest napisany za pomocą SproutCore. appleinsider.com/articles/08/06/16/…
Chuck

Apple ma własną bazę kodów, ale regularnie łączą się z publicznym repozytorium.

Ponadto w odpowiedzi na problem z hiperłączem SC służy do tworzenia bogatych aplikacji internetowych. Oznacza to, że normalnie sam nie dotykasz DOM. W rezultacie nie masz zamiaru tworzyć własnych hiperłączy.

7

Korzystam z SproutCore i jest po prostu świetny. Przeszliśmy z jQuery na SproutCore , ponieważ jQuery oferuje mały zestaw narzędzi, a SproutCore oferuje ładną architekturę wysokiego poziomu.

Oceniliśmy te biblioteki JavaScript w następującej kolejności:

  1. Prototyp , który wydawał się w porządku, ale jQuery ma więcej wsparcia i książek itp.
  2. jQuery , który czuł się świetnie, ale nie miał żadnego wsparcia dla ładnej architektury wysokiego poziomu i zaczęliśmy go budować, ale zajęło to zbyt wiele czasu.
  3. Cappuccino , które ma ładną architekturę wysokiego poziomu, ale nie ma mapy drogowej i dokumentacji
  4. SproutCore ROZWIĄZANIE, ponieważ oferuje ładną architekturę wysokiego poziomu i ma ładny wbudowany system kompilacji

Nasza najlepsza lista:

  1. SproutCore jest ZWYCIĘZCĄ
  2. jQuery to dobry zestaw narzędzi
  3. Cappuccino wygląda obiecująco, ale jeszcze go nie ma
  4. Prototyp jest w porządku, ale moim zdaniem nie tak dobry jak jQuery

Oczywiście jest więcej zestawów narzędzi, ale te właśnie oceniliśmy. Podsumowując, mogę gorąco polecić SproutCore każdemu, kto buduje aplikacje klasy desktop za pomocą Javascript. Jeśli potrzebujesz tylko prostego Javascript, takiego jak selektory dat itp., Polecam jQuery.

Jeszcze jedna wskazówka. W momencie pisania tej odpowiedzi SproutCore 1.0 jest najnowszą stabilną wersją. Niestety jest dość stary i korzystamy z najnowszej wersji, którą można znaleźć na stronie Github SproutCore . Mogę gorąco polecić.


4

Jeśli próbujesz dostać się do SproutCore, zalecamy wykopanie się w przykładowej aplikacji SproutTweets. Znajduje się tam wiele bardziej wydajnych konstrukcji (stany, dynamicznie ładowane ramy, użyteczny przykład źródła danych).

Aplikację SproutTweets można znaleźć na github http://github.com/sproutit/sproutcore-samples/tree/master/apps/sproutweets/

  • Należy również pamiętać, że uruchomienie próbki w przeglądarce Safari z inspektorem internetowym daje bardziej użyteczny zestaw komunikatów o błędach.
  • Serwer sc zawiera serwer proxy, którego można użyć do uzyskania dostępu do własnego źródła danych REST uruchomionego na lokalnym serwerze internetowym. Sprawdź plik kompilacji w przykładowej aplikacji sprouttweets powyżej, aby zobaczyć, jak to działa.
  • Zawarte w sc-serv proxy jest dość ograniczone. Jeśli masz problemy z żądaniami warstwy danych, które powodują sc-build, spróbuj wdrożyć na lokalnym serwerze WWW zamiast proxy. Znaleźliśmy problemy z naszymi pętlami uwierzytelniania 401 i strumieniowaniem dużych odpowiedzi zestawu danych (kodowanie chunckowane).

Nawet jeśli nie masz zamiaru używać SproutCore w aplikacji produkcyjnej, musisz to sobie zgłębić, aby zapoznać się z potężnym podejściem do programowania aplikacji javascript - zwłaszcza KVO i mixin (aspektów). Dużo wspaniałej architektury do przemyślenia i nauki.

Ostatni punkt - kanał IRC może być znacznie bardziej pomocny niż inne źródła informacji, ustępując jedynie głębokiemu nurkowaniu w grupowych dyskusjach Google.


2

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.