Domanda

Di recente sono comparsi numerosi framework per la scrittura di applicazioni desktop simili a quelle del Web. Per esempio. SproutCore e cappuccino . Hai qualche esperienza con loro? Qual è la tua impressione? Mi sono perso qualche altro framework?

Ho visto relative domande su StackOverflow, ma generano principalmente risposte standard come "usa jQuery o MochiKit o MooTools o Dojo o YUI". Mentre alcune persone danno non standard risposte , sembrano avere poca esperienza usando questo framework.

Qualcuno può condividere esperienze reali sviluppando app simili a destop per il browser?

È stato utile?

Soluzione

A causa dei problemi di velocità che questi framework di alto livello causano per molte applicazioni più grandi (come in: non banali), usiamo solo jQuery. Nei nostri test, tutti i framework di alto livello si sono rotti in situazioni in cui vi sono molti oggetti trascinabili o molti target di rilascio e in situazioni in cui sono stati visualizzati sullo schermo lunghi elenchi (con > 1000 voci).

Parte di ciò è dovuta a problemi con IE6 e IE7 (dove le prestazioni iniziano improvvisamente a deteriorarsi drammaticamente dopo che gli alberi DOM hanno raggiunto una certa complessità), ma parte è dovuta al sovraccarico generato da questi framework.

Quindi non consiglierei nessuno dei quadri di alto livello. La mia raccomandazione sarebbe di usare jQuery e lavorare direttamente con il DOM.

Alcuni suggerimenti per migliorare le prestazioni:

  • Ove possibile, eseguire il rendering HTML su server.
  • Mantieni l'HTML semplice come possibile.
  • Evita di avere molti elementi nella struttura del DOM.
  • Evita ricorsivi struttura della tabella (IE si interrompe improvvisamente mostrandoli dopo relativamente pochi livelli di nidificazione).
  • Rimuovi invisibile elementi dall'albero DOM.
  • Rimuovi cose dall'albero DOM prima cambiandoli e quindi reinserendoli loro, piuttosto che cambiarli mentre sono nell'albero.

Altri suggerimenti

Dal mio punto di vista, Cappuccino è un esempio di cosa NON fare. Hanno implementato un'altra lingua oltre a JavaScript, che porta già lentezza mentre lo sviluppatore del browser sta già combattendo duramente e, cosa peggiore, non si basano affatto sul widget del browser, interrompendo tutta l'esperienza di navigazione dell'utente. Ad esempio, hanno implementato la propria barra di scorrimento, con il principale svantaggio che l'uso della rotellina del mouse non funzionerà più!

Preferisco davvero l'approccio di ExtJS che ti offre ricchi widget mantenendo l'interfaccia utente il più vicino possibile dal browser.

Inoltre, come gizmo, raccomando EXT JS. La loro licenza è cambiata e potrebbe non funzionare per tutti, ma è comunque una buona scelta se vuoi fare cose come un desktop.

Ecco la loro pagina di esempio per un ambiente desktop: http: // extjs. com / deploy / dev / esempi / desktop / desktop.html

Apple sta dimostrando che lo sproutcore funziona, sebbene sia difficile stimare quanto funzioni bene. Attualmente creo app Web con un set di librerie cresciuto in casa, duplicando un set di funzionalità dalla nostra suite di software Windows (ma adattato a un'interfaccia web). Fino ad ora ho evitato i framework in particolare per il motivo che non volevo il gonfiamento. Il problema con questo approccio è che spreco una quantità eccessiva di tempo a duplicare funzionalità già presenti nei framework e ritengo che col tempo mi approssigherò verso qualcosa che assomiglia a questi framework.

Per questo motivo ho sperimentato l'implementazione di un'app Web in extjs ed è stata un'esperienza sorprendentemente piacevole. Le prestazioni sono eccellenti e la facilità di sviluppo è piuttosto elevata perché il loro set di componenti è buono per la creazione di app, non solo per dimostrazioni fantasiose (un problema comune nei web toolkit). Lo consiglierei sicuramente se sei interessato a creare app Web simili a desktop.

Il problema di ridimensionarlo ovviamente si applica ancora, ma onestamente, ritengo che sia meglio usare un toolkit in situazioni in cui la scala non è così importante e tornare al javascript di base solo dove è necessario (l'ottimizzazione prematura è il radice di tutti i mali). Extjs può sovrapporre prototipo o jquery, quindi questo approccio è sicuramente praticabile. Evitare troppo contenuto nel DOM è di solito un approccio di caricamento e scaricamento su richiesta. Ad esempio, esiste un'estensione di terze parti per la classe grid extjs che consente di scorrere un set di dati da un milione di righe essendo intelligente sul caricamento e lo scaricamento dei dati.

Potresti considerare di utilizzare GWT-Ext (usa Ext sotto) potrebbe essere una soluzione molto pulita se hai intenzione di usare Java.

Mi piace qooxdoo , anche se utilizza l'approccio OOP di JS piuttosto che il prototipo è un framework solido e ha molte funzionalità.

Non ho alcuna esperienza con SproutCore o Capuccino. Ma ho tentato di usare Dojo sopra Django per questo tipo di lavoro. Posso solo dirti che è lento e difettoso.

extjs potrebbe essere di aiuto. http://dev.extjs.com/deploy/dev/examples/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top