Una home page collegata a due modelli ha due controller?

0

Sto lavorando con un framework MVC per creare un semplice Q & un'app Web e sto cercando di cogliere l'idea dei controller che agiscono sull'app.

Ad esempio, supponiamo di avere una home page con i seguenti link:

  • Home > Accedi > Home > Profilo
  • Home > Elenco di domande (aggiornate dinamicamente) > (nuova visualizzazione che mostra) Uno domanda
  • Home > Elenco dei principali rispondenti (aggiornati dinamicamente)

In questo caso, avrebbe senso avere due controller, vale a dire - DomandeController: per portare le domande recenti dal modello di domanda - UsersController: per aiutare l'accesso e portare i migliori rispondenti dal modello User

Ho fatto qualche ricerca e ho scoperto che potevo usare un SessionsController per il login / logout. Ovviamente, anche il principale ApplicationController è lì. Quindi, per questa sola visione, sembrano esserci 4 controllori al lavoro ... È una pratica decente?

    
posta sofarsophie 06.06.2017 - 12:34
fonte

1 risposta

3

Provenendo da un ragazzo che ha sviluppato diverse applicazioni in AngularJS, direi che è comune avere più controller che lavorano in un dato momento.

Ad esempio, router come UI-Router consente di definire le diverse schermate dell'applicazione (stati) come un gruppo di viste, ciascuna vista con il proprio controller.

I vantaggi sono piuttosto sostanziosi: in cima alla mia testa:

  1. Separazione delle preoccupazioni. Mentre la schermata corrente offre diverse funzioni, ogni controller governa la propria area di responsabilità. Nel tuo esempio, un controller per domande, uno per le risposte, uno per la sessione e uno per la navigazione, ecc.

  2. La scalabilità. Manterrà il tuo codice frammentato invece che tutto in un unico posto, quando la tua classe di controller UI inizia a strisciante fino a 500+ linee di codice, inizierai a far fatica.

  3. Riutilizzabilità del codice (DRY). Se si passa a una schermata diversa, è possibile combinare e abbinare i controller esistenti e riutilizzarne alcuni. Ad esempio, se si naviga in una sezione Domande frequenti, ho ancora bisogno di un controller per la barra di navigazione e il piè di pagina.
risposta data 06.06.2017 - 12:54
fonte

Leggi altre domande sui tag