Dovrebbe esserci un solo controller per pagina all'interno di un'architettura MVC basata su JavaScript?

0

Diciamo che creo una pagina nella mia applicazione web marketplace in cui gli acquirenti possono vedere un catalogo di tutti i prodotti offerti da alcuni o tutti i venditori o i venditori possono vedere solo i propri prodotti in un'anteprima della vista di questo acquirente.

All'interno del mio codice JavaScript creerei un oggetto modello che sincronizzava i dati con il server, uno o più oggetti di visualizzazione che renderebbero vari pezzi di tali dati all'utente e un oggetto controller che indirizzava i messaggi tra il modello e le viste. / p>

Ora diciamo che creo un'altra pagina nella mia applicazione in cui un acquirente può vedere un catalogo solo dei prodotti offerti da un singolo venditore (sì, questo è solo un sottoinsieme delle funzionalità di cui sopra ma vieni con me su questo per il bene di questo ipotetico). In questo caso, tuttavia, il catalogo esiste in una scheda della pagina con schede di pari livello che contengono altri dati non correlati.

Se dovessi riutilizzare tutti gli oggetti che ho creato per la prima pagina, sarebbe ancora possibile chiamare il pezzo "centrale" un controller quando verrebbe incluso in una scheda di una pagina che probabilmente avrebbe il proprio controller oggetto? O sarebbe più corretto attaccare con un singolo controller per "pagina" e chiamare questo tipo di oggetto di visualizzazione anche se il suo scopo rimane quello di instradare i messaggi tra il proprio modello interno e le sue viste?

Il punto cruciale della mia domanda è se da un punto di vista concettuale ci dovrebbe essere un solo controller nel codice JavaScript per una singola pagina o se le unità componenti astratte possono avere la propria architettura MVC nascosta dall'architettura MVC più grande della pagina?

    
posta natlee75 18.09.2014 - 00:10
fonte

1 risposta

2

Dipende davvero dalla struttura della pagina. Se una pagina ha un solo scopo e una preoccupazione, allora dovresti provare ad usare un singolo controller in modo che il codice sia raggruppato logicamente.

Se ci sono più componenti in una pagina con preoccupazioni diverse, dovresti assolutamente utilizzare più controller per il disaccoppiamento.

Ad esempio, considera una pagina con un corpo che tiene traccia dei prodotti di un venditore e un'intestazione che tiene traccia delle informazioni dell'utente e della sessione di accesso. Il controllore per i prodotti del venditore dovrebbe tenere una logica sui prezzi, la segnalazione degli stock, sconti e così via. Fornendo al controller la possibilità di disconnettere l'utente o modificare la password, diluisce lo scopo e lo rende meno riutilizzabile. Dall'altra parte, fornire informazioni sul prezzo del controller utente sui prodotti del venditore è inutile quando si passa a una pagina sulle date di arrivo della spedizione.

Al centro di tutto ciò, questa è solo una versione di livello superiore delle discussioni sull'incapsulamento che girano attorno al mondo OOP. Una sezione di codice, uno scopo, nessun intromissione senza permesso esplicito dal codice in questione. Ciò impedisce la duplicazione del codice, la corruzione del codice e strani effetti collaterali. Rende anche il codice molto più gestibile quando devi ragionare su un singolo argomento quando guardi una sezione specifica di codice.

    
risposta data 21.02.2015 - 17:32
fonte

Leggi altre domande sui tag