Come posso associare due quadri MVC senza che si combattano a vicenda? [chiuso]

2

Sto creando un progetto web basato su CRUD e sto pensando di utilizzare un framework MVC lato server (come CodeIgniter o Laravel) in tandem con un framework MVC lato client (come AngularJS). È un approccio abbastanza comune? Dopotutto, è chiaro che ho bisogno di qualcosa sul server e che anche MVC sul client può migliorare la mia applicazione. Tuttavia, ritengo che due framework MVC sullo stesso progetto si intralcerebbero l'un l'altro e porterebbero a complessità e ripetizioni sproporzionate.

Quale tipo di approccio o architettura mi aiuterebbe a ottenere il meglio da entrambi i framework MVC quando ne utilizzo uno sul client, l'altro sul server?

    
posta SASM 25.04.2014 - 09:54
fonte

6 risposte

8

Laravel e AngularJS funzionano davvero abbastanza bene insieme; c'è un buon video su Laracasts e alcuni buoni articoli online.

In generale, non si vorrebbe utilizzare più framework MVC in un progetto poiché aumenta in modo eccessivo, così come molta ridondanza. Il tuo framework MVC medio comprenderà un ORM, un motore di templating, un router e così via - componenti di cui hai solo bisogno. In effetti, l'utilizzo di due probabilmente aumenterà la complessità e introdurrà conflitti.

L'eccezione qui è dove i quadri sono separati in modo chiaro, come nel caso di un framework lato server e di un framework lato client. Entrambi i framework stanno facendo cose completamente diverse.

Tuttavia, se si desidera combinare l'uso di Laravel e AngularJS, molto probabilmente non si utilizzeranno tutte le funzionalità di Laravel. La strategia raccomandata è quella di implementare qualcosa di simile a un'API REST utilizzando le rotte delle risorse di Laravel e di trattare tutte le interazioni come chiamate API AJAX.

Questo significa che non userete realmente la V di Laravel; I.e Views with Blade. (A parte forse il layout per caricare inizialmente l'app)

Un rapido google di "Laravel e AngularJS" restituisce un'intera pletora di articoli, ma forse la risorsa migliore è questo progetto di esempio:

Esempio Github: link

Un articolo degno di nota è stato questo però:

link

Descrive la struttura proposta di tale app, nonché i percorsi delle risorse che ho citato sopra.

    
risposta data 26.04.2014 - 12:39
fonte
1

Le best practice dicono che mentre utilizziamo sia MVC che angularJS, dovremmo usare MVC web api sul lato server per ottenere dati dal server E sul lato client dovremmo usare il framework Angularjs per legare i dati JSON con i controlli html.

Sul client: Sul client, ho utilizzato AngularJS per gestire qualsiasi cosa, dalla chiamata della web API alla convalida locale. Dà all'utente la risposta "immediata" che viene spinta dall'ultima spinta sul web. Puoi rendere la tua pagina dinamica o relativamente statica. Usando un'architettura che usa una separazione di preoccupazioni, posso sostituire il back-end con qualsiasi cosa che supporti un'API RESTful.

Sul server: Ho trovato che la cosa più semplice da fare era creare un po 'di API web RESTful per fornire servizi dati al client. Inoltre eseguo la convalida sul server per assicurarmi che nessuno imbrogli (inviando i dati usando un client diverso dalla pagina web). Assemblerò anche la pagina Web (sebbene un controller e una vista minima) per caricare tutte le librerie di cui ha bisogno. Dal momento che sto costruendo la pagina web senza quasi modifiche dalla vista all'HTML finale, dovrei essere in grado di sostituire AngularJS con qualcos'altro.

    
risposta data 01.06.2014 - 18:08
fonte
1

Se si desidera utilizzare AngularJS sul lato client e Laravel sul backend è prima necessario creare una pagina iniziale in cui l'applicazione si carica e vive. E attorno a questo per costruire servizi JSON (in laravel o qualche altro, i metodi di controller che gestiscono le risposte e le richieste, il tuo CRUD).

Se hai molti oggetti diversi (tabelle?), crea una vista iniziale per ognuno di essi.

Sono tutti livelli diversi. Il framework MVC js lato client è facoltativo, sicuro che può aiutare molto e strutturare un'applicazione, ma è anche possibile avere una struttura applicativa senza framework. Ma dipende da te. Se ti senti obbligato a quelle tecnologie, vai avanti e inizia a programmare!

    
risposta data 09.10.2014 - 20:49
fonte
0

Dichiarazione di non responsabilità: non sono più familiare con PHP.

  • Per ASP.NET, è prassi comune utilizzare insieme ASP.NET MVC (+ Web API) e AngularJS.

Il routing non dovrebbe essere un problema, come

  • tutte le richieste di instradamento verranno prima ricevute da AngularJS.
  • Solo le chiamate di servizio da Angular JS raggiungerebbero MVC lato server.

Tipicamente, Serverside MVC gestirà Autenticazione / Autorizzazione per tutti i percorsi e tutto il resto sarà gestito dall'applicazione AngularJS.

    
risposta data 25.04.2014 - 12:48
fonte
0

MVC / MVVM Frameworks sul lato client sono totalmente separati dai framework che stai utilizzando sul lato server. Ad esempio, senza un back-end per AngualJS non avrai molte funzionalità per la tua applicazione. Il back-end potrebbe essere NodeJS app o Laravel o Zend Framework o qualsiasi altra cosa.

Il tuo approccio è totalmente valido per utilizzare un frameowork MVC sul lato server e un MVC / MVVM sul lato client, tuttavia non c'è qualsiasi best practice generale da menzionare qui in quanto la tua domanda è di ampio respiro in tal senso.

    
risposta data 25.04.2014 - 13:43
fonte
-3

Puoi usare angularjs per il front-end e codeigniter o un altro framework php per il back-end senza problemi. Devi solo ricordare che entrambi sono MVC (Model-View-Controller).

Perché usare concetti simili ma con strutture diverse? Perché angularjs funziona con il modello HTML e tutte le viste sono HTML (non includono l'intestazione e il piè di pagina). Ad esempio, con un contatto modulo devi solo specificare sul modello HTML il div per ng-view (per caricare le viste angularjs). E su nav per l'applicazione devi specificare il controller e la vista sorgente e sul file app.js hai il codice per il provider che il modello del router deve caricare ogni volta.

Per il codeigneter devi creare il controller e il modello per creare l'interazione con il database se ne hai bisogno. Ma tieni presente che il code-code può definire le rotte più facilmente. Devi solo caricare le viste con un'estensione di .php in cui tali viste avranno solo le viste angolari come HTML.

Puoi lavorare con più framework come CSS + angularjs + codeigneter o altri framework MVC.
Per la convalida dei moduli, è possibile utilizzare la convalida dei form dal CSS framework e non utilizzare angularjs. E basta usare angularjs per comunicare con il framework MVC e inviare i dati usando JSON.

Non so se segui la mia idea ma nella tecnologia puoi integrare tutto per creare un'app robusta e strong. Ma a volte prendi solo una parte di ogni framework e non ne usi tutto il 100%.

    
risposta data 23.02.2015 - 15:35
fonte

Leggi altre domande sui tag