Qualcuno ha usato Sproutcore?


19

Qualcuno ha usato Sproutcore per un'applicazione web? In tal caso, puoi darmi una descrizione della tua esperienza? Attualmente lo sto prendendo in considerazione, ma ho alcune preoccupazioni. Innanzitutto, la documentazione è negativa / incompleta e temo che passerò un sacco di tempo a capire le cose o scavare nel codice sorgente. Inoltre, sono un po 'titubante nell'utilizzare un progetto relativamente nuovo e che potrebbe subire cambiamenti significativi.

Tutti i pensieri delle persone che si sono sviluppati in Sproutcore sono apprezzati!

EDIT / PS: Sì, ho visto questo post: /programming/370598/sproutcore-and-cappuccino . Tuttavia sono interessato a una descrizione un po 'più lunga di Sproutcore stesso da parte di qualcuno che lo ha utilizzato per un progetto significativo.


2
Non posso rispondere alla domanda, ma posso dirti che Apple stessa utilizza SproutCore per i propri servizi .Mac. Quindi è almeno abbastanza maturo per quello.
Chuck,

Sì, è quello che ha suscitato il mio interesse. Ma con quel poco che ho provato, la documentazione è abbastanza brutta (specialmente, ad esempio, per SC.DataSource e SC.Store) che non sono sicuro se valga la pena.

Risposte:


20

Stiamo usando sproutcore più di un anno.

In primo luogo ho sviluppato utilizzando la versione 0.9 che era eccellente ma aveva problemi di prestazioni, relativi a KVO, set di dati di grandi dimensioni ecc. Ma poiché SproutCore è Javascript (vicino a JavaScript) siamo stati in grado di risolverli per la nostra applicazione. Per me in realtà, SproutCore mi ha insegnato il modo corretto di codificare javascript. Stavo imparando Javascript e SproutCore allo stesso tempo.

Da qualche parte intorno a luglio hanno rilasciato SproutCore 1.0 pre-alpha. L'API è stata modificata in modo significativo, quindi convertire la nostra applicazione in una versione più recente è stato un progetto in sé. E la documentazione era zero in quel momento.

Ora le cose sono cambiate, c'è documentazione e wiki molto carino. Nuovi tutorial e documentazione aggiunti ogni giorno.

Se stai pensando di usare / valutare SproutCore questo è il momento giusto. E ogni giorno SproutCore mi stupisce per la capacità e la potenza che contiene. Ci sono ancora molti bordi irregolari, che riducono ogni giorno.

Alcune risorse:

SproutCore Wiki

Documenti API

Aggiunta recente per l'API dell'archivio dati (che è una parte molto importante)


17

Ho lavorato con un'azienda che utilizzava SC per la riprogettazione della sua ammiraglia. Ecco i miei pensieri:

  1. Mi piace molto il layout MVC di un'app SC. È qualcosa che penso manchi ad altri framework JS. Il loro framework di rilegatura semplifica l'aggiornamento delle viste.

  2. La migliore documentazione era nel codice stesso.

  3. La necessità di una migliore documentazione / altri esempi. I loro esempi sono sufficienti per iniziare, ma le cose avanzate sorprenderanno la maggior parte degli utenti.

  4. Il livello di accesso ai dati è troppo complicato. È un enorme mistero. Devono davvero sostenere la documentazione o fornire altri esempi per spianare la strada in modo che le persone possano usarla correttamente. D'altra parte, sembra essere un framework quasi ORM davvero potente.

  5. Mi piace il fatto che stress test.

  6. La mancanza di una griglia è una vera resistenza. Molte, se non la maggior parte delle app, hanno bisogno di griglie. Detto questo, SC è un framework MVC completo, non un framework di widget (componenti) che elencano EXTJS.

  7. Gran parte del codice sembrava eccessivamente complesso. Ogni volta che un metodo deve essere più lungo di 10-30 righe, dovrebbe essere realmente suddiviso per aumentare la leggibilità.

  8. Forse la più grande considerazione è questa: se stai lavorando a un progetto e considerando SC, avrai davvero problemi a trovare sviluppatori competenti per lavorarci. Quindi potrebbe essere utile per un piccolo progetto personale, ma stai correndo un rischio con un grande progetto che richiederà manutenzione.

  9. Il supporto IRC è stato fenomenale. I ragazzi su quel canale sono davvero utili.


1
Il livello di accesso ai dati è troppo complicato. È un enorme mistero. - infatti. Inoltre, il debug è un compito infernale.
c69,

@ c69 - Quando ho scritto questo, ci credevo. Ma da allora ho scavato e sono giunto alla conclusione che l'archivio dati è abbastanza potente e non troppo difficile da capire. Devi solo iniziare a fare cose con esso
hvgotcodes

forse nelle versioni attuali, è vero - ma io lavoro con SC legacy, e la sua
pura

@ c69, se hai problemi specifici, fai una domanda e forse posso aiutarti
hvgotcodes

15

Sfoglia i post dei gruppi sproutcore nei gruppi di Google per avere un'idea di cosa sta succedendo.

Qualche settimana fa qualcuno si è lamentato dei documenti, essendo un principiante, e fondamentalmente quello che ha ottenuto è stato: "se non ti piace, perché non aiuti a creare i documenti" ... beh duh !!

Vedrai problemi come questo fin dall'inizio. Inoltre, alcune settimane fa qualcuno ha chiesto al gruppo come creare un collegamento ipertestuale usando Sproutcore. Voglio dire, LOL, a quanto pare ci vogliono ore per creare un semplice collegamento ipertestuale.

Sproutcore non fa pubblicità a chi sta usando il proprio framework in natura: di solito non è un buon segno.

Si afferma (non per sproutcore stesso) che Apple lo usa, ma se guardi da vicino vedrai che Apple ha la sua base di codice.

Personalmente ho trovato sproutcore pieno di bug, la mancanza di una semplice visualizzazione da tavolo esempi fastidiosi, incompleti o non funzionanti, e l'assenza di documentazione e persino l'assenza di TEST completi non è solo una buona base su cui basare.


5
Ho affermato che Apple lo utilizza ed è della stessa Apple. MobileMe è scritto con SproutCore. appleinsider.com/articles/08/06/16/…
Chuck

Apple ha una propria base di codice, ma si fondono regolarmente con il repository pubblico.

Inoltre, in risposta al problema del collegamento ipertestuale, SC è realizzato per la creazione di app Web avanzate. Ciò significa che normalmente non si sta toccando il DOM da soli. Di conseguenza, non si intende creare i propri collegamenti ipertestuali.

7

Sto usando SproutCore ed è semplicemente fantastico. Siamo passati da jQuery a SproutCore , poiché jQuery offre un piccolo set di utility e SproutCore offre una piacevole architettura di alto livello.

Abbiamo valutato queste librerie Javascript nel seguente ordine:

  1. Prototipo , che sembrava ok ma jQuery ha più supporto e libri, ecc.
  2. jQuery , che è stato fantastico, ma non ha avuto alcun supporto per una bella architettura di alto livello e abbiamo iniziato a costruirne uno, ma ci è voluto troppo tempo.
  3. Cappuccino , che ha una bella architettura di alto livello ma manca di roadmap e documentazione
  4. SproutCore LA SOLUZIONE, dal momento che offre una bella architettura di alto livello e ha un bel sistema di build integrato

La nostra lista top:

  1. SproutCore è il VINCITORE
  2. jQuery è un buon toolkit
  3. Il cappuccino sembra promettente ma non è ancora del tutto lì
  4. Il prototipo è ok, ma secondo me non è buono come jQuery

Naturalmente ci sono più toolkit, ma questi sono quelli che abbiamo valutato. In conclusione, posso consigliare vivamente SproutCore a chiunque stia costruendo applicazioni di classe desktop utilizzando Javascript. Se hai solo bisogno di un semplice Javascript, come selettori di date, ecc., Ti consiglio jQuery.

Solo un altro consiglio. Al momento della stesura di questa risposta, SproutCore 1.0 è l'ultima versione stabile. Sfortunatamente è piuttosto vecchio e stiamo usando l'ultima versione che può essere trovata dalla pagina Github di SproutCore . Lo consiglio vivamente.


4

Se stai tentando di accedere a SproutCore, ti consiglio di scavare nell'applicazione di esempio SproutTweets. Molti dei costrutti più potenti (stati, framework caricati dinamicamente, un utile esempio di origine dati) sono presenti.

Puoi trovare l'applicazione SproutTweets su github http://github.com/sproutit/sproutcore-samples/tree/master/apps/sproutweets/

  • Inoltre, tieni presente che l'esecuzione dell'esempio in Safari con la finestra di ispezione web fornisce una serie più utile di messaggi di errore.
  • Sc-server contiene un proxy che può essere utilizzato per accedere alla propria origine dati REST in esecuzione su un server Web locale. Fare riferimento al file di build nell'app di esempio sprouttweets sopra per vedere come funziona.
  • Il proxy incluso nello sc-serve è piuttosto limitato. Se si riscontrano problemi con le richieste del livello dati, sc-build può essere provato con la distribuzione sul server Web locale anziché con il proxy. Abbiamo riscontrato problemi con i nostri loop di autenticazione 401 e streaming di risposte di set di dati di grandi dimensioni (codifica chuncked).

Anche se non hai intenzione di utilizzare SproutCore in un'applicazione di produzione, devi farlo a te stesso per esplorarlo ulteriormente per vedere un potente approccio alla programmazione di applicazioni javascript - in particolare le cose KVO e mixins (aspetti). Un sacco di grande architettura su cui riflettere e da cui imparare.

Ultimo punto: il canale IRC può essere molto più utile di altre fonti di informazione, secondo solo ad alcune immersioni profonde nelle discussioni del gruppo di Google.


2

Ho usato SproutCore in passato. Mi è stato assegnato un progetto per sviluppare script di test web automatizzati usando lo strumento chiamato Selenium RC. Selenium RC è stato creato per indirizzare ID e classi HTML regolari, ma SproutCore compila gli ID elemento in modo che gli ID elemento siano pseudo casuali, quindi ho dovuto capire l'API per SproutCore in modo da poter estrarre gli ID elemento dall'albero della vista.

SproutCore ha una stretta analogia con i compilatori. Se hai troppi elementi che stai importando creando per la tua pagina web, c'è la possibilità che tu abbia una collisione dello spazio dei nomi sugli ID se dovessi costruire la tua applicazione con jQuery. Quando crei la tua pagina web con jQuery, tutti gli ID degli elementi HTML sono globali. Non esiste un ambito locale come in un linguaggio compilato o interpretato.

SproutCore finisce per gestire il contenuto HTML per te. Le visualizzazioni sono costruite utilizzando JavaScript e quindi compilate. Se segui il tutorial di SproutCore (e sono d'accordo che SproutCore manchi di documentazione, quindi dovresti cercare di evitarlo per un'applicazione aziendale), vedrai che il tuo progetto finito ha elementi ID di "sc - ###". Le collisioni dello spazio dei nomi vengono risolte sul sito Web offrendoti il ​​potenziale per lavorare più velocemente.

Tuttavia, ci sono grandi preoccupazioni. La loro documentazione non fa un buon lavoro spiegando perché le persone dovrebbero usarla. Il progetto è open source, ma scavare fino in fondo per capire il javascript di livello inferiore per come sono costruite le viste diventa doloroso. Javascript è un linguaggio funzionale, ma trovo qualcosa di sbagliato nei linguaggi funzionali dinamici. C'è troppa flessibilità. Sto collegando Scala.

L'ultimo numero. SproutCore può essere lento. Ma è un prezzo da pagare

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.