Dove si inserisce jQuery con framework come JavaScriptMVC, BackboneJS, SproutCore e Knockout?


14

Ho usato felicemente JQuery negli ultimi 2 anni e ho avuto abbastanza successo nel creare alcune funzionalità davvero interessanti con esso ... quindi mi sento molto a mio agio con esso. Credo anche che il futuro del web continuerà sull'attuale percorso lato client.

Tuttavia...

La prossima sfida sembra arrivare sotto forma di vari framework di controller: KnockoutJS , BackboneJS , SproutCore , JavaScriptMVC (l'elenco potrebbe continuare).

Inoltre, ci sono alcuni fantastici strumenti AMD Loader da usare come RequireJS o LabJS ecc. Tuttavia, jQuery ora ha definee thenfunzionalità integrate.

Sta diventando sempre più difficile tenere traccia di tutto ...

E ora, il mio compito sembra essere quello di valutare / decidere una direzione strategica per utilizzare una qualche forma di un client MVC o MVVM framework lato client ... ma ho così tante domande.

  • Dove si inserisce JQuery con i vari framework di controller sopra menzionati?
  • JQuery è usato insieme a ciascuno o alcuni di essi hanno la loro " versione in stile JQuery " integrata?
  • Strumenti come RequireJS sono ancora necessari se si implementa uno dei vari framework di controller sopra menzionati?
  • Fa le definee thencapacità cotto-in JQuery ora sostituiscono l'AMD Loader di cui sopra?
  • Quale sembra più modulare? (vedi note sotto)

NOTE:
Una cosa che non voglio in nessun quadro futuro è il requisito di dover accettare enormi quantità di funzionalità che non utilizzo. Voglio dire, preferirei usare un framework veramente modulare. Ad esempio, per usare l'interfaccia utente di jQuery devi prendere molte altre librerie di base che potresti non utilizzare effettivamente.

Sperimenterò con ciascuno di essi, ma alcuni feedback REALI sarebbero grandi. Ho visto alcune domande "simili", ma nessuna ha veramente risposto all'inclinazione di cui sopra.

Grazie in anticipo!

Risposte:


11

jQuery uno strumento di normalizzazione tra browser. Ti dà quanto segue

  • Utilità DOM
  • Sistema di eventi
  • Ajax
  • animazioni
  • Utilità ES5
  • qualche altra cosa

Backbone / knockout / yada / yada sono librerie simili a MVC che sono lì per aiutarti a strutturare e scrivere applicazioni modulari. Ne hai bisogno solo se vuoi la loro struttura.

RequireJS / yada / yada sono caricatori di moduli. Hai bisogno di una forma di caricatore di moduli se vuoi scrivere un'applicazione modulare.

Dove si inserisce JQuery con i vari framework di controller sopra menzionati?

Come accennato, jQuery normalizza i browser. i framework dei controller no. Non hai bisogno di jQuery ma hai bisogno di un modo per normalizzare i browser.

JQuery è usato insieme a ciascuno o alcuni di essi hanno la loro "versione in stile JQuery" integrata?

Backbone / knockout / JavaScriptMVC non ha la normalizzazione del browser inserita, quindi è necessario uno strumento per questo. Non sono sicuro di SproutCore sembra avere molto dentro.

Strumenti come RequireJS sono ancora necessari se si implementa uno dei vari framework di controller sopra menzionati?

Questi sono necessari solo se si scrive per scrivere applicazioni modulari. Quindi praticamente sì.

Esistono tre tipi di applicazioni modulari

  • async richiede caricatori come requireJS
  • la sincronizzazione richiede caricatori come modul8
  • usando gli spazi dei nomi e includendo solo i file
  • pacchetti come ender

Le capacità definite e quindi integrate in JQuery ora superano il Caricatore AMD sopra menzionato?

No. la funzionalità di definizione inserita in jQuery consente di utilizzarla con un caricatore AMD senza eseguire il wrapping di jQuery. Hai ancora bisogno di un caricatore AMD. La funzionalità "then" è solo un po 'di zucchero di jQuery differito.

Quale sembra più modulare? (vedi note sotto)

Questa è una domanda supponente. La mia opinione personale è che tutti questi framework, incluso jQuery, sono gonfiati e non modulari.

Vuoi modulare, scrivere la tua libreria, scrivere la tua architettura.

Tuttavia, se si desidera il minore dei mali, sceglierei la spina dorsale perché è semplice e piccola o spina dorsale che è simile


Grazie Raynos ... posso sempre contare su di te per un'ottima risposta!
Prigioniero ZERO

@Marjan Sto aspettando che altri possano interessarsi a inviare qualsiasi input.
Prigioniero ZERO

@PrisonerZERO: nessun problema. Dato che sei sembrato contento della risposta di Raynos, il mio commento è stato nel caso in cui non sapessi di accettare una risposta (non ho controllato il tuo profilo e il tuo rappresentante suggerisce che sei un utente abbastanza nuovo qui)
Marjan Venema

2

Risponderò su JavaScriptMVC poiché sono un collaboratore:

Dove si inserisce JQuery con i vari framework di controller sopra menzionati?

JavaScriptMVC dipende da jQuery e lo utilizza ampiamente.

JQuery è usato insieme a ciascuno o alcuni di essi hanno la loro "versione in stile JQuery" integrata?

JavaScriptMVC non ha funzionalità concorrenti con jQuery. Questo non è così vero con Backbone che ha il suo sistema di eventi. Tuttavia, qualsiasi cosa la spina dorsale o la colonna vertebrale aggiungono sono molto minime.

Strumenti come RequireJS sono ancora necessari se si implementa uno dei vari framework di controller sopra menzionati?

JavaScriptMVC viene fornito con un sistema di gestione delle dipendenze -> ruba. Puoi usare JavaScriptMVC con RequireJS, ma rubare è in realtà molto più potente e di dimensioni uguali scaricato da un utente.

Quale sembra più modulare? (vedi note sotto)

Questo non è supponente. JavaScriptMVC è estremamente modulare. Usi solo ciò di cui hai bisogno. Rispetto alla spina dorsale o alla colonna vertebrale, è possibile utilizzare le sue parti M, V o C in modo indipendente. Se assemblato insieme, è solo 1k più grande di Backbone (quando si utilizzano jQuery e Underscore). Puoi vedere le varie dimensioni dei componenti di base qui: https://github.com/jupiterjs/javascriptmvc/issues/26

Ma JavaScriptMVC è molto più potente (in termini di funzionalità) rispetto a Backbone o Spine. Ad esempio, i gestori di eventi basati su modelli impediscono praticamente tutte le perdite di memoria. Ecco una descrizione comandi che si nasconde quando si fa clic sulla finestra:

$.Controller('Tooltip',{
  "{window} click" : function(){
    this.element.remove();
  }
})

Questo è assolutamente critico con l'approccio MVC quando i tuoi controlli stanno ascoltando cambiamenti nel modello come:

$.Controller('Todos',{
  "{Todo} created" : function(Todo, ev, createdTodo){

  }
})

Il controller si separerà automaticamente da tutti questi gestori di eventi esterni.

Alcuni altri punti di forza delle sole parti MVC:

  • $ .Class è un sistema di classe molto potente
  • $ .View e $ .Model supportano i rinvii
  • $ .Controller può "ricollegare" i gestori di eventi
  • $ .Model supporta associazioni, getter / setter, impostazioni predefinite, convalide

Ora, JavaScriptMVC è molto più che parti di MVC (che fanno parte del sottoprogetto jQueryMX). Esso ha:

  • jQueryMX: funzionalità mancanti di jQuery come eventi speciali, helper dom, ecc.
  • Ruba - un sistema di gestione delle dipendenze. Ma può fare cose come prendere un'app Ajax e renderla google crawlable.
  • FuncUnit - Un framework di test straordinariamente potente.

Ora, su cosa usare, dipende molto. Molto dipende se stai realizzando una "app" o una "pagina". Un'applicazione, che necessita di test, gestione delle dipendenze, a cui tieni delle perdite di memoria, guarderei JMVC o SproutCore.

Se stai incollando insieme alcuni widget di base, guarderei la colonna vertebrale o la spina dorsale.


"Backbone o dorso, puoi usare le sue parti M, V o C standalone." Tranne ciascuna delle M, V e C sono grandi quanto la spina dorsale e la colonna vertebrale.
Raynos,

Non è vero. Backbone è 5k con la sua sottolineatura dipendenza. Non sono sicuro di cosa sia la colonna vertebrale. Ma ecco la ripartizione: Classe: 1k, Controller: 1.74k, Modello: 2.8k, $ .Vista: 1.6k, $ .String: .5k. Per un totale combinato di 8,6k. Sono 3k in più, ma funzionalità molto più utili.
Justin Meyer,

Utilizzeresti JavaScriptMVC con qualcosa come i controlli dell'interfaccia utente di Kendo? Quali altri controlli?
Prigioniero ZERO

Sì, qualsiasi libreria dell'interfaccia utente basata su jQuery dovrebbe funzionare perfettamente (purché utilizzi il sistema di eventi jQuery per gli eventi).
Justin Meyer,

Dovrei notare che Backbone può usare Zepato invece di jQuery, rendendolo molto meno delle dipendenze combinate MVM JMVC con jQuery. Ma perdi un bel po 'senza jQuery.
Justin Meyer,
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.