10

Io sono nel processo di integrazione Backbone e Backbone.Marionette in un progetto di applicazione Web esistente. Abbiamo in programma di lasciare tutte le funzionalità esistenti nel progetto da solo per ora, ma qualsiasi nuova funzionalità trarremo vantaggio dalla strutturazione Backbone e dai principali Marionette. Uno dei primi ordini è quello di decidere su una libreria di rendering dei modelli HTML e una soluzione di associazione dei dati per questi modelli. In precedenza, abbiamo utilizzato JsRender e JsViews per tutte le nostre esigenze relative ai modelli e l'associazione dei dati, ma siamo disposti a esplorare nuove strade per le nostre nuove funzionalità. Quindi, in pratica, ho cercato varie soluzioni e ora ho bisogno di consigli o pensieri su cosa scegliere. Ecco quello che ho guardato finora:Backbone: Model-to-modello e modello-to-model vincolante

Backbone.StickIt:

Pro: sembra seguire l'idea di Backbone della separazione sulle preoccupazioni che aiuta a mantenere i modelli molto "pulito".

Contro: Sembra che sia necessario scrivere un po 'più codice nelle viste per definire i collegamenti. Inoltre, sembra non avere la capacità di eseguire il rendering condizionale, quindi devi sempre rendere il modello completo e semplicemente attivare la visualizzazione di determinati elementi.

Rivets.js:

Pro: Gestisce un po 'più dati opzioni all'interno del modello di legame senza renderlo troppo disordinato.

Contro: Inoltre, sembra privo di rendering condizionale.

Knockback/Knockout:

Pro: gestisce tutti i tipi di dati vincolanti esigenze attraverso gli attributi.

Contro: Facile da avviare "sporcare" il modello con i convertitori. È necessario aggiungere un altro passaggio per creare modelli di visualizzazione Knockout dai modelli Backbone.

JsViews:

Pro: Simile alla capacità di Knockout, ma con sintassi diversa. Gestisce il rendering condizionale.

Contro: In passato abbiamo sporcato i nostri modelli con l'aggiunta di logica di business troppo all'interno del modello, ma che può essere un problema con il nostro sviluppo che possiamo correggere. È necessario creare funzionalità per legare la funzionalità di osservabilità di JsViews agli eventi del modello Backbone. Altre librerie come StickIt e Knockback gestiscono automaticamente questo.

Abbiamo anche guardato in Backbone.ModelBinder, che è da qualche parte nel mezzo StickIt e Rivetti.

Qualcuno può condividere le decisioni che hanno preso e perché hanno scelto un plug-in/libreria rispetto ad un altro? Sono anche aperto ad altri suggerimenti. Grazie.

risposta

2

Ho usato questi

Baffi.js

Pro: non solo i baffi supportano il binding a variabili, ma possono anche gestire il binding di funzioni. Ad esempio puoi avere

<a href="{{test}}" >click me </a> 

E poi nella tua vista avere un metodo chiamato test. Ciò consente di risparmiare un sacco di assegnamenti di classe/id per il collegamento da collegare e associare l'evento nella classe View.

Con: la sintassi non mi piace.

Avanti Quindi uso il coffeescript in Ruby on Rails, che ha una build in jst eco templating system. un professionista è, hai i modelli in file separati. Sul pageload si legano a una variabile globale nella dom. Questi sono minimizzati ed è molto meglio di alcuni tag di template pseudo script. Un altro professionista è che scrivi se altro e per loops come fai in ruby. Lo svantaggio è che usano i tag del rasoio e non consentono un facile mixin con il codice serveride (come una traduzione).

Altra biblioteca è ovviamente il motore di templatura. Molto semplice, ma piuttosto potente. Proseguo, l'hai già disponibile (il carattere di sottolineatura è necessario per il backbone). Il lato negativo è, non è possibile (per impostazione predefinita) caricare un modello da un file esterno. Ho risolto questo problema usando il codice serveride (require_once, render partial). Se si utilizza require.js, tuttavia, insieme al plug-in di testo (http://requirejs.org/docs/download.html#text), è possibile caricare i modelli come dipendenza.

+1

Ho controllato underscore (divertente che non avevo considerato è incluso come hai menzionato). Ho sentito che potremmo avere gli stessi problemi con i modelli "spaghetti". La preoccupazione principale è che abbiamo un numero di sviluppatori che lavorano su modelli e abbiamo iniziato a intrecciare troppa logica e sintassi dei template nell'HTML. Quindi, per costringerci ad abbandonare questa abitudine, abbiamo scelto di andare con Backbone.Stickit. Sembra che ci vorrà del tempo per abituarsi a creare associazioni al di fuori del modello, ma speriamo di beneficiare della "pulizia" del nostro HTML. Grazie per il tuo contributo. –