Dovrei utilizzare sia AngularJS che ASP.NET MVC?

55

Ho iniziato ad imparare AngularJS e ASP.NET MVC, ma non sono sicuro del motivo per utilizzarli entrambi nello stesso progetto?

Non sono entrambi framework MVC? Dovrei usarli entrambi nella stessa applicazione? Non è uno o l'altro?

    
posta Natalie 25.12.2015 - 02:01
fonte

4 risposte

73

Se stai costruendo un'applicazione per una singola pagina (SPA) , probabilmente non hai bisogno di "MVC" in ASP.NET MVC . Le viste, in particolare le viste dinamiche, sono probabilmente fornite / manipolate dal lato client. Maniglie angolari che vanno bene.

Ma forse non vuoi una SPA al 100%. Allora cosa? Immagina invece 10 pagine, ma 10 pagine che sono molto dinamiche. Dopo che un utente si collega, c'è un piccolo badge utente nell'angolo a destra. Non è dinamico. Mostra solo alcune cose interessanti come il "punteggio" dell'utente e il loro ultimo selfie. Metti in cache le cose belle in modo che possano essere facilmente recuperate. Ora puoi andare in due modi con questo. Se sei un purista MVC lato client, recuperi i dati del badge solo dopo che il payload HTML iniziale è stato consegnato, proprio come tutti gli altri dati. Ma forse non sei un purista. Forse sei l'opposto di un purista. Forse sei un impurista. Quindi, invece di consegnare l'HTML iniziale, consegnare un po 'di JavaScript che invierà di nuovo al tuo server, postare via JavaScript per afferrare i dati dei badge e quindi unire i dati in una vista tramite MVC lato client, devi semplicemente decidere di unire i dati già nella cache in una vista sul server e quindi fornire che come codice HTML iniziale. Dopo che il tuo HTML iniziale è stato consegnato, procedi con le tipiche buffs MVC lato client.

Quindi ... MVC sul server e sul client è solo un modo conveniente per organizzare il codice che era un casino nel 2001. Non devi scegliere l'uno o l'altro. Puoi scegliere entrambi. Certo, più fai dopo che l'HTML iniziale è stato consegnato, meno hai bisogno di MVC lato server. Eppure, è lì per te se ne hai bisogno. Ad esempio, ho lavorato su un'applicazione ASP.NET MVC / Angolare in cui i modelli angolari esterni potrebbero effettivamente essere .NET MVC ActionResult. Ciò significa che il controller del server potrebbe unire i dati nella sua vista, consegnarli a Angular come modello e il controller di Angular potrebbe quindi unire i suoi dati nella vista. Non sto dicendo che sia una buona idea, ma mostra solo che una forma di MVC non rende l'altra obsoleta.

Inoltre, a prescindere dalla modalità di implementazione di Angular, avrai bisogno di un modo per fornire l'HTML iniziale, i modelli e, soprattutto, i dati. Perché non usare una piattaforma che lo rende facile? Ce ne sono molti, ma .NET MVC non è privo di spazio. Come ho detto, puoi rendere il modello iniziale HTML e i modelli Angular esterni il risultato di un'azione MVC, ma, meglio ancora, puoi utilizzare .NET .NET. API Web per fornire i dati. Le API Web sono deliziose come la composta di albicocche.

Riassunto: MVC è solo uno schema. Potresti voler usare quel modello su qualsiasi numero di livelli fisici. Non può essere esaurito. Usalo liberamente se ha senso. Inoltre, Angular potrebbe non essere MVC comunque (così dice le persone che si preoccupano di queste cose), quindi sentiti libero di usalo con uno strumento che ha "MVC" nel nome. Inferno, anche se è MVC, mescolare e abbinare a piacere.

    
risposta data 25.12.2015 - 08:54
fonte
17

ASP.NET MVC è un framework lato server; non gli interessa quali librerie JavaScript usi. AngularJS è una libreria lato client, che non si cura di quale tecnologia lato server alimenta il sito Web: può essere Python, ASP.NET MVC o anche il semplice vecchio gruppo di file HTML statici memorizzati direttamente sul disco.

ASP.NET MVC e AngularJS sono entrambi compatibili e ci sono molti progetti che li usano insieme.

hai bisogno di usare entrambi? Non proprio. Dipende interamente dalle esigenze del tuo progetto.

  • Se il tuo sito web è dinamico, devi utilizzare alcuni script sul lato server. È possibile utilizzare ASP.NET e il fatto che si utilizzi AngularJS non renderà il codice lato server più MVC. Se vuoi essere in grado di strutturare l'applicazione lato server come MVC, preferisci selezionare ASP.NET MVC.

  • Analogamente, il fatto che si stia utilizzando ASP.NET MVC non implica nulla sulla struttura del proprio codice lato client. Puoi mettere tutto il tuo JavaScript in un singolo file senza alcun pensiero sulla struttura ed essere soddisfatto di questo (fino a quando il progetto inizia a crescere). Anche in questo caso, AngularJS si presenta come un modo per strutturare l'applicazione sul lato client.

Nota a margine: hai taggato la tua domanda ASP.NET MVC 3. A meno che non si tratti di un progetto legacy che devi mantenere o di avere vincoli specifici quando si ospita l'applicazione su server legacy che non sono stati aggiornati negli ultimi quattro anni, potrebbe utilizzare invece ASP.NET MVC 4 o 5.

    
risposta data 25.12.2015 - 02:58
fonte
8

Se utilizzi Visual Studio, è disponibile un nuovo modello di sito Web MVC "applicazione singola pagina" che include controller angolari e MVC Web Api.

Funziona bene perché il codice lato server MVC fornisce endpoint json per il codice lato client angolare da chiamare.

Inoltre, è possibile utilizzare i controller MVC per offrire la vista HTML o le visualizzazioni di base per l'app per singola pagina. questo ti dà la potenza della generazione lato server, autorizzazione, reindirizzamenti, gestione degli errori ecc.

Spesso vorrai una piccola quantità di html / javascript generato dal server anche su una singola app, cose come gli URL degli endpoint per ambienti diversi, lingue diverse o persino la pagina di autenticazione dispari che potrebbe essere più semplice fare lato server.

    
risposta data 25.12.2015 - 12:51
fonte
0

3 anni dopo, usa l'API Web ASP.NET per pubblicare i tuoi dati e Angular (js o più recente) per strutturare la tua app sul lato client. Se stai creando un sito statico, usa solo ASP.NET MVC.

    
risposta data 20.03.2018 - 19:49
fonte

Leggi altre domande sui tag