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 targetizzare id e classi HTML standard, ma SproutCore compila gli ID degli elementi in modo che gli ID degli elementi siano pseudo casuali, quindi ho dovuto calcolare l'API per SproutCore in modo da poter visualizzare gli ID degli elementi dall'albero delle viste.
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 nello spazio dei nomi sugli ID se dovessi creare la tua applicazione con jQuery. Quando crei la tua pagina web con jQuery, tutti gli ID degli elementi HTML sono globali. Non esiste lo scope locale come in un linguaggio compilato o interpretato.
SproutCore finisce per gestire il contenuto HTML per te. Le viste sono costruite usando javascript e quindi compilate. Se segui il tutorial SproutCore (e sono d'accordo che SproutCore è privo di documentazione, quindi dovresti cercare di evitarlo per un'applicazione aziendale), vedrai che il tuo progetto finito ha elementi ID di "sc - ###". Le collisioni nello spazio dei nomi sono state risolte sul sito Web, offrendoti la possibilità di lavorare più velocemente.
Tuttavia, ci sono grandi preoccupazioni. La documentazione non fa un buon lavoro spiegando perché la gente dovrebbe usarlo. Il progetto è opensource, ma scavando verso il basso per capire il javascript di livello inferiore per come le viste sono costruite diventano dolorose. Javascript è un linguaggio funzionale, ma trovo qualcosa di sbagliato con i linguaggi funzionali dinamici. C'è solo troppa flessibilità. Sto collegando Scala.
L'ultimo numero. SproutCore può essere lento. Ma è un prezzo da pagare