2012-09-16 14 views
6

Sono nuovo alla dorsale, e sono qui per chiedere un po 'di aiuto per capire come farei per costruire il mio progetto webapp attuale. Sto sviluppando un pannello di amministrazione modulare per server. Ogni singola "pagina" del pannello dovrebbe essere un "modulo" impacchettato che include controllori, modelli e viste.Configurazione modulare Backbone.js

Il pannello sarà costituito inizialmente da una vista di layout principale, con una navigazione di base. Quando un utente fa clic su un link sulla navigazione, una pagina viene caricata tramite AJAX nel layout. (E se questo suona stupido/c'è una ragione per non farlo mi dica :))

Dal momento che gli altri si svilupperanno queste pagine troppo, e dal momento che sono modulari, io non so quali modelli, punti di vista e controller mi verrà presentato all'interno della pagina che carico tramite AJAX.

Come farei meglio a fare questo con il backbone?

Mi chiedo in particolare come estendere dinamicamente i modelli Backbone ecc. E come gestirò (ad esempio) l'utente che lascia la pagina e/o la rivede in seguito.

Does Backbone fornisce qualcosa con cui posso lavorare, ho bisogno di infilarmi qualcosa insieme, c'è un modo migliore di fare ciò che mi manca?

risposta

2

Il tuo modo di pensare intorno ai problemi sembra molto corretto. Rendi i componenti dell'interfaccia utente autonomi il più possibile. Guarda questo 10 min video per ottenere ulteriori informazioni sulle best practice relative ai componenti dell'interfaccia utente.

Se sei interessato ad altre importanti preoccupazioni dello sviluppo di applicazioni JavaScript, consulta l'architettura di riferimento BoilerplateJS che ho pubblicato per condividere le mie esperienze. Contiene un'applicazione di esempio simile a quella descritta (menu con attivazione componente).

mie raccomandazioni per l'attivazione componente di interfaccia utente, disattivazione sono:

  • Non rimuovere/creare i componenti DOM. Riutilizzare con hide/show, dato che i tuoi elementi si ripeteranno nella memoria anche dopo aver rimosso dal DOM
  • Riduci a icona le informazioni di "stato" sul lato client. Quando un utente rivisita il componente, aggiornalo con una chiamata al server e rendilo visibile (usa il server come singola verità di informazioni sullo stato).

Vedere le implementazioni dei componenti campione di BoilerplateJS per ulteriori dettagli. Conosco pochi che lo usano con BackboneJS (attualmente viene fornito con knockoutJS). Spediremo un esempio di esso usando BackboneJS in v0.2, che è dovuto in una settimana.

+1

BoilerplateJS sembra essere un buon modo di fare le cose, grazie per la condivisione! –

+2

Su BoilerplateJS, abbiamo aggiunto un componente di esempio che utilizza BackboneJS per MVC. Dai un'occhiata al componente TODO di esempio su http://boilerplatejs.org/samples/productsuite/index.html#todo. Puoi trovare il codice su GitHub. – Hasith

1

Dai uno sguardo a Marionette o Chaplin. Entrambi sono basati su Backbone e forniscono un modo strutturato per creare un'applicazione più grande con Backbone.

2

Un framework di caricamento di script modulare comune utilizzato in combinazione con Backbone sarebbe require.js. Potrebbe essere quello che stai cercando. Require.js è tutto sui moduli AMD, moduli asincroni. Di solito ogni modello, collezione, vista è il proprio modulo che definisce le dipendenze di cui un particolare modulo ha bisogno, quindi carica quei moduli secondo necessità. È particolarmente adatto per progetti di grandi dimensioni in cui sono presenti molti pezzi singoli che devono essere miscelati insieme in diversi punti dell'applicazione.

Ovviamente è possibile combinare più elementi backbone in un singolo modulo (in genere lo riservo per Views e subview specifici che verranno utilizzati solo con la visualizzazione padre) ma dipende solo da te.

Con Backbone, in genere l'intento è quello di creare applicazioni a singola pagina - il che significa che tutto lo scaffolding di pagina viene solitamente racchiuso come un singolo file e completamente caricato sul lato client al momento del rilascio. I dati per ciascuna pagina vengono quindi chiamati tramite ajax e popolati mentre l'utente naviga e carica diversi aspetti dell'applicazione. È questo ciò che intendevi nella tua descrizione?

Se stai cercando di caricare pagine diverse che sono state prese singolarmente dal server, allora non sono sicuro che Backbone sia la risposta. Esistono altri framework MVC lato server che aiutano a farlo.

Questo generalmente riguarda il modo in cui Backbone viene utilizzato per questo genere di cose.

Per quanto riguarda l'estensione dei modelli Backbone e simili, Backbone utilizza Underscore come dipendenza e sottolineatura fornisce una bella funzione _.extend() che può facilmente estendere tutti gli oggetti in qualsiasi modo desideri. Ignorando le funzionalità di default, lanciando mixin, è tutto abbastanza indolore per quanto riguarda Backbone. Come framework, Backbone è molto gradevole quando si tratta di alterare, modificare e personalizzare ogni pezzettino e pezzo.

Per quanto riguarda la gestione degli utenti che visitano e rivisitano le pagine, Backbone.router consente di creare URL che non puntano solo a "pagine" specifiche nell'app ma anche di eseguire codice arbitrario che deve essere eseguito per arrivarci. Qualcosa di simile a un utente che ha effettuato l'accesso visitando "account mysite/#" farebbe in modo che il router carichi determinati script che generano quella particolare vista, nonché forse i dati necessari per ottenere quella visualizzazione attiva e in esecuzione per l'utente.

Non sono sicuro che ci siano risorse che offrono una struttura di base da cui partire. La maggior parte delle esperienze che conosco tendono a passare attraverso i tutorial di base come "Todo List" e risalgono da lì. Non sono sicuro di quale sia il tuo livello di esperienza con javascript o programmazione in generale, ma ho iniziato con Backbone E quando non sapevo nulla. Solo una vaga idea di ciò che JSON era e una comprensione di basso livello di HTTP come in "è quella cosa che ottiene le pagine web". Detto questo, penso che Backbone sia stato davvero facile da ottenere per me e ha approfondito molto la mia conoscenza sull'intera struttura dell'app di tipo REST sul lato client.

C'è una lista molto buona là fuori dell'app "Todo List" in molti gusti diversi come Backbone e Knockout e alcuni altri. Quando ho deciso su un framework, ho praticamente analizzato quel codice confrontando tutti i diversi framework disponibili e selezionati Backbone perché mi sembrava che avesse più senso per me. Non me ne pento. È molto divertente e penso che il modo migliore per farlo sia provare alcuni tutorial dimostrativi.

+0

Grazie per questa grande risposta. "Se stai cercando di caricare diverse pagine prese singolarmente dal server, allora non sono sicuro che Backbone sia la risposta: ci sono altri framework MVC sul lato server che aiutano a farlo." Potresti indicarmi i quadri? –

+0

Non ho usato la maggior parte di questi, quindi non posso garantire per loro ma puoi consultare questo elenco e verificarne alcuni [PHP MVC Frameworks] (http://www.phpwact.org/php/mvc_frameworks) . CakePHP e Codeigniter sembrano avere una reputazione per essere semplici e piacevoli da usare.Ho usato parti del framework Zend prima senza l'intero framework e ha una libreria molto ampia e ben pensata. – jmk2142

Problemi correlati