Hat jemand Sproutcore benutzt?


19

Hat jemand Sproutcore für eine Webanwendung verwendet? Wenn ja, können Sie mir eine Beschreibung Ihrer Erfahrungen geben? Ich denke gerade darüber nach, habe aber einige Bedenken. Erstens ist die Dokumentation schlecht / unvollständig, und ich befürchte, dass ich viel Zeit darauf verwenden werde, Dinge herauszufinden oder den Quellcode zu durchsuchen. Außerdem zögere ich ein bisschen, ein Projekt zu verwenden, das relativ neu ist und erhebliche Änderungen erfahren könnte.

Alle Gedanken von Leuten, die sich in Sproutcore entwickelt haben, sind willkommen!

EDIT / PS: Ja, ich habe diesen Beitrag gesehen: /programming/370598/sproutcore-and-cappuccino . Ich bin jedoch an einer etwas längeren Beschreibung von Sproutcore selbst von jemandem interessiert, der es für ein bedeutendes Projekt verwendet hat.


2
Ich kann die Frage nicht beantworten, aber ich kann Ihnen sagen, dass Apple selbst SproutCore für seine eigenen .Mac-Dienste verwendet. Also ist es zumindest ausgereift genug dafür.
Chuck

Ja - das hat mein Interesse geweckt. Aber mit dem Wenigen, das ich ausprobiert habe, ist die Dokumentation schlecht genug (insbesondere für SC.DataSource und SC.Store), dass ich nicht sicher bin, ob es den Aufwand wert ist.

Antworten:


20

Wir verwenden Sproutcore seit mehr als einem Jahr.

Zuerst habe ich mit Version 0.9 entwickelt, die ausgezeichnet war, aber Leistungsprobleme im Zusammenhang mit KVO, großen Datensätzen usw. hatte. Da SproutCore jedoch Javascript ist (ähnlich wie Javascript), konnten wir sie für unsere Anwendung lösen. SproutCore brachte mir die richtige Art der Javascript-Codierung bei. Ich habe gleichzeitig Javascript und SproutCore gelernt.

Irgendwann im Juli veröffentlichten sie SproutCore 1.0 Pre-Alpha. Die API wurde erheblich geändert, sodass die Konvertierung unserer Anwendung in eine neuere Version ein Projekt für sich war. Und die Dokumentation war zu diesem Zeitpunkt gleich Null.

Jetzt haben sich die Dinge geändert, es gibt Dokumentation und ein sehr schönes Wiki. Täglich neue Tutorials und Dokumentationen hinzugefügt.

Wenn Sie daran denken, SproutCore zu verwenden / auszuwerten, ist dies der richtige Zeitpunkt. Und SproutCore beeindruckt mich jeden Tag mit seiner Leistungsfähigkeit. Trotzdem gibt es viele Ecken und Kanten, was sich jeden Tag verringert.

Einige Ressourcen:

SproutCore Wiki

API-Dokumente

Kürzlich hinzugefügt für die Datenspeicher-API (was ein sehr wichtiger Teil ist)


17

Ich habe mit einem Unternehmen zusammengearbeitet, das SC für die Neugestaltung seiner Flaggschiff-App verwendet. Hier sind meine Gedanken:

  1. Ich wirklich wie das MVC - Layout einer SC - App. Es ist etwas, von dem ich denke, dass es anderen JS-Frameworks fehlt. Ihr verbindliches Framework macht das Aktualisieren von Ansichten zum Kinderspiel.

  2. Die beste Dokumentation war im Code selbst.

  3. Das braucht bessere Dokumentation / mehr Beispiele. Ihre Beispiele sind genug, um Ihnen den Einstieg zu erleichtern, aber fortgeschrittene Dinge werden die meisten Benutzer überraschen.

  4. Die Datenzugriffsschicht ist zu kompliziert. Es ist ein riesiges Rätsel. Sie müssen die Dokumentation wirklich stärken oder mehr Beispiele bereitstellen, damit die Menschen sie richtig nutzen können. Auf der anderen Seite scheint es sich um ein wirklich mächtiges fast ORM-Framework zu handeln.

  5. Ich mag die Tatsache, dass sie Stresstests machen.

  6. Das Fehlen eines Gitters ist eine echte Belastung. Viele, wenn nicht die meisten Apps, benötigen Raster. Das heißt, SC ist ein MVC-Framework mit vollem Funktionsumfang, kein Framework mit EXTJS-Listen für Widgets (Komponenten).

  7. Ein Großteil des Codes schien zu komplex zu sein. Immer wenn eine Methode länger als 10-30 Zeilen wird, sollte sie wirklich aufgeteilt werden, um die Lesbarkeit zu verbessern.

  8. Die vielleicht größte Überlegung ist folgende: Wenn Sie an einem Projekt arbeiten und SC in Betracht ziehen, werden Sie echte Probleme haben, kompetente Entwickler zu finden, um daran zu arbeiten. Das ist vielleicht gut für ein kleines persönliches Projekt, aber Sie gehen ein Risiko mit einem großen Projekt ein, das gewartet werden muss.

  9. Die IRC-Unterstützung war phänomenal. Die Jungs auf diesem Kanal sind wirklich hilfreich.


1
Die Datenzugriffsschicht ist zu kompliziert. Es ist ein riesiges Rätsel. - tatsächlich. Außerdem ist das Debuggen eine verdammt große Aufgabe.
2.

@ c69 - Als ich das geschrieben habe, habe ich das geglaubt. Aber seitdem habe ich mich eingegraben und bin zu dem Schluss gekommen, dass der Datenspeicher ziemlich leistungsfähig und nicht allzu schwer zu verstehen ist. Sie müssen nur anfangen, damit zu arbeiten
hvgotcodes

vielleicht in aktuellen Versionen, seine wahre - aber ich arbeite mit Legacy - SC, und es ist einfach Wahnsinn .. (und es ist nicht aktualisierbar, wie es scheint)
c69

@ C69, wenn Sie bestimmte Probleme haben, stellen Sie eine Frage und vielleicht kann ich helfen
hvgotcodes

15

Stöbern Sie einfach in den Sproutcore-Gruppenbeiträgen von Google Groups, um ein Gefühl dafür zu bekommen, was los ist.

Vor einigen Wochen hat sich jemand über die Dokumente beschwert, da er ein Neuling ist, und im Grunde hat er folgendes bekommen: "Wenn es dir nicht gefällt, warum hilfst du nicht, die Dokumente zu erstellen" ... na duh !!

Sie werden Probleme wie diese sehen, seit es anfängt. Vor ein paar Wochen fragte jemand die Gruppe, wie man mit Sproutcore einen Hyperlink erstellt. Ich meine, LOL, es dauert anscheinend Stunden, um einen einfachen Hyperlink zu erstellen.

Sproutcore macht keine Werbung dafür, wer sein Framework in der Natur einsetzt: normalerweise kein gutes Zeichen.

Es wird behauptet (nicht von Sproutcore selbst afaik), dass Apple es benutzt, aber wenn Sie genau hinsehen, werden Sie sehen, dass Apple eine eigene Codebasis hat.

Ich persönlich fand, dass Sproutcore mit Fehlern durchsetzt ist, dass das Fehlen einer einfachen Tabellenansicht ärgerlich, unvollständig oder nicht funktionierend ist und das Fehlen von Dokumentation und sogar das Fehlen vollständiger TESTS einfach keine gute Grundlage ist, auf der man aufbauen kann.


5
Ich habe behauptet, dass Apple es verwendet und es ist von Apple selbst. MobileMe ist mit SproutCore geschrieben. appleinsider.com/articles/08/06/16/…
Chuck

Apple verfügt zwar über eine eigene Codebasis, diese wird jedoch regelmäßig mit dem öffentlichen Repo zusammengeführt.

Als Reaktion auf das Problem mit Hyperlinks wurde SC für die Erstellung umfangreicher Webanwendungen entwickelt. Dies bedeutet, dass Sie das DOM normalerweise nicht selbst berühren. Aus diesem Grund sind Sie nicht dazu bestimmt, eigene Hyperlinks zu erstellen.

7

Ich benutze SproutCore und es ist einfach toll. Wir sind von jQuery auf SproutCore umgestiegen , da jQuery eine kleine Reihe von Dienstprogrammen und SproutCore eine schöne Architektur auf hoher Ebene bietet.

Wir haben diese Javascript-Bibliotheken in der folgenden Reihenfolge ausgewertet:

  1. Prototyp , der sich ok anfühlte, aber jQuery hat mehr Unterstützung und Bücher usw.
  2. jQuery , das sich großartig anfühlte, aber keine Unterstützung für eine schöne Architektur auf hohem Niveau hatte, und wir begannen, eine zu erstellen, aber es dauerte zu lange.
  3. Cappuccino , der eine schöne Architektur auf hohem Niveau hat, aber keine Roadmap und Dokumentation hat
  4. SproutCore DIE LÖSUNG, da dies eine schöne Architektur auf hohem Niveau und ein schönes eingebautes Build-System bietet

Unsere Topliste:

  1. SproutCore ist der Gewinner
  2. jQuery ist ein gutes Toolkit
  3. Cappuccino sieht vielversprechend aus, ist aber noch nicht ganz da
  4. Prototype ist ok, aber meiner Meinung nach nicht so gut wie jQuery

Natürlich gibt es noch mehr Toolkits, aber diese haben wir ausgewertet. Abschließend kann ich SproutCore jedem empfehlen, der Desktop-Anwendungen mit Javascript erstellt. Wenn Sie nur ein einfaches Javascript benötigen, wie Datumsauswahl usw., empfehle ich jQuery.

Nur noch ein Tipp. Zum Zeitpunkt des Schreibens dieser Antwort ist SproutCore 1.0 die neueste stabile Version. Leider ist es ziemlich alt und wir verwenden die neueste Version, die auf der Github-Seite von SproutCore zu finden ist . Das kann ich nur empfehlen.


4

Wenn Sie versuchen, in SproutCore einzusteigen, empfehle ich Ihnen, sich in die SproutTweets-Beispielanwendung einzuarbeiten. Viele der leistungsstärkeren Konstrukte (Status, dynamisch geladene Frameworks, ein nützliches Beispiel für eine Datenquelle) sind dort enthalten.

Sie finden die SproutTweets-Anwendung auf github http://github.com/sproutit/sproutcore-samples/tree/master/apps/sproutweets/

  • Beachten Sie auch, dass das Ausführen des Beispiels in Safari mit dem Webinspektor eine nützlichere Reihe von Fehlermeldungen liefert.
  • Der sc-Server enthält einen Proxy, mit dem auf Ihre eigene REST-Datenquelle zugegriffen werden kann, die auf einem lokalen Webserver ausgeführt wird. Informationen zur Funktionsweise finden Sie in der Build-Datei in der Beispiel-App "sprouttweets".
  • Der im sc-serve enthaltene Proxy ist ziemlich begrenzt. Wenn Sie Probleme mit Ihren Datenschichtanforderungen haben, versuchen Sie es mit der Bereitstellung auf Ihrem lokalen Webserver anstelle des Proxys. Wir haben Probleme mit unseren 401-Authentifizierungsschleifen und dem Streaming von Antworten auf große Datasets (Chunck-Codierung) festgestellt.

Auch wenn Sie nicht beabsichtigen, SproutCore in einer Produktionsanwendung zu verwenden, müssen Sie sich näher damit befassen, um einen leistungsfähigen Ansatz für die Programmierung von Javascript-Anwendungen zu finden - insbesondere mit KVO und Mixins (Aspekten). Viel großartige Architektur zum Nachdenken und Lernen.

Letzter Punkt: Der IRC-Kanal kann weitaus hilfreicher sein als andere Informationsquellen, abgesehen von einigen Tiefen-Diskussionen in den Google-Gruppendiskussionen.


2

Ich habe SproutCore in der Vergangenheit benutzt. Mir wurde ein Projekt zur Entwicklung automatisierter Web-Testskripte mit dem Tool Selenium RC übertragen. Selenium RC wurde entwickelt, um auf reguläre HTML-IDs und Klassen abzuzielen, aber SproutCore kompiliert die Element-IDs so, dass die Element-IDs pseudozufällig sind. Daher musste ich die API für SproutCore herausfinden, damit ich die Element-IDs aus dem Ansichtsbaum herausfinden konnte.

SproutCore hat eine enge Analogie zu Compilern. Wenn Sie zu viele Elemente importieren, die für Ihre Webseite erstellt werden, besteht die Möglichkeit, dass die IDs im Namespace kollidieren, wenn Sie Ihre Anwendung mit jQuery erstellen. Wenn Sie Ihre Webseite mit jQuery erstellen, sind alle IDs von HTML-Elementen global. Es gibt keinen lokalen Geltungsbereich wie in einer kompilierten oder interpretierten Sprache.

SproutCore verwaltet den HTML-Inhalt für Sie. Die Ansichten werden mit Javascript aufgebaut und dann kompiliert. Wenn Sie das SproutCore-Lernprogramm durcharbeiten (und ich bin mir sicher, dass es in SproutCore keine Dokumentation gibt, sollten Sie versuchen, dies für eine Geschäftsanwendung zu vermeiden), werden Sie feststellen, dass Ihr fertiges Projekt ID-Elemente von "sc - ###" enthält. Namespace-Kollisionen werden auf der Website behoben, sodass Sie schneller arbeiten können.

Es gibt jedoch große Bedenken. Die Dokumentation ist nicht gut genug, um zu erklären, warum die Leute sie verwenden sollten. Das Projekt ist OpenSource, aber wenn Sie sich ein Bild davon machen, wie die Ansichten aufgebaut sind, wird es schwierig, das niedrigere Javascript zu verstehen. Javascript ist eine funktionale Sprache, aber ich finde etwas falsch mit dynamischen funktionalen Sprachen. Es gibt einfach zu viel Flexibilität. Ich stecke Scala ein.

Die letzte Ausgabe. SproutCore kann langsam sein. Aber es ist ein Preis zu zahlen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.