2013-03-25 9 views
145

AngularJS è molto potente quando si tratta di HTML5 interattivo e associazione di modelli. D'altra parte, framework PHP come Yii consentono uno sviluppo di applicazioni web rapido, ben strutturato, sicuro e potente. Entrambe le tecnologie forniscono mezzi sofisticati per l'accesso ai dati, l'iterazione e il layout delle pagine.Devo mischiare AngularJS con un framework PHP?

È buona o cattiva pratica mescolare questi due approcci (lato client e lato server "impostazione pagina") o è piuttosto contro il significato di applicazioni Web HTML5 AJAX interattive e senza interruzioni?

Non sto parlando di generare JS utilizzando PHP (See this question) - Sto parlando di generare una vista che farà uso di AngularJS.

So anche che una pagina AngularJS deve (o può) comunicare con il server tramite i servizi REST per ottenere dati (See this question) anziché recuperarlo direttamente dalle variabili PHP. Ma per me sembra più conveniente progettare il "frame" per l'intera applicazione web separatamente in PHP (ad esempio, costruire il menu principale o gestire autorizzazioni/sessioni ecc.)

+23

Ottima domanda. Vorrei che ci fosse un luogo StackExchange progettato per questo tipo di domanda. Sono abituato a PHP e ho un progetto cURL per raccogliere personalmente molti dati, e credo che un framework JavaScript su libreria sarebbe una buona idea per il mio progetto. Il mio problema è come il tuo, voglio sapere che cosa è una buona pratica (aspetti positivi e negativi) insieme a quali parti ti perdi dal progetto originale (PHP) ecc.Credo che queste conversazioni possano sollecitare il dibattito, ma come possiamo arrivare alla migliore unione delle due lingue senza una conversazione. – Shane

risposta

170

Sembra che tu possa stare più a tuo agio con lo sviluppo in PHP lasciate che questo ti trattiene dall'utilizzare tutto il potenziale con le applicazioni web.

È possibile infatti che PHP esegua il rendering di partial e viste intere, ma non lo consiglierei.

Per sfruttare appieno le possibilità di HTML e JavaScript per creare un'applicazione Web, ovvero una pagina Web che si comporta più come un'applicazione e che si basa in gran parte sul rendering lato client, è necessario considerare di lasciare che il cliente mantenga tutte le responsabilità della gestione stato e presentazione. Questo sarà più facile da mantenere e sarà più facile da usare.

Ti consiglierei di pensare in modo più confortevole in un approccio più centrato sull'API. Piuttosto che avere un output PHP con una vista pre-renderizzata e usare angolare per la semplice manipolazione DOM, dovresti considerare di avere il backend PHP in output i dati che dovrebbero essere eseguiti su RESTFully e avere Angular presentandolo.

Utilizzo di PHP per generare la vista:

/user/account

if($loggedIn) 
{ 
    echo "<p>Logged in as ".$user."</p>"; 
} 
else 
{ 
    echo "Please log in."; 
} 

Come lo stesso problema può essere risolto con un approccio centric API emettendo JSON simili:

api/auth/

{ 
    authorized:true, 
    user: { 
     username: 'Joe', 
     securityToken: 'secret' 
    } 
} 

e in Angular si potrebbe fare un get, un gestire il lato client di risposta.

$http.post("http://example.com/api/auth", {}) 
.success(function(data) { 
    $scope.isLoggedIn = data.authorized; 
}); 

di fondere sia lato client e lato server il modo in cui avete proposto può essere in forma per i piccoli progetti in cui manutenzione non è importante e tu sei il singolo autore, ma mi appoggio di più verso la via centrica API in quanto questo sarà più corretta separazione di conserns e sarà più facile da mantenere.

+2

Per semplice esempio. Io stesso stavo cercando più di un semplice login di base super duper che tutti fanno. Grande differenza con PHP/HTML e variabili $ nome su {{nome}} e poi con 'app.run (funzione ($ rootScope) {$ rootScope.name = "Ari Lerner";});' Io stesso sto cercando di vedere/trovare il lato positivo di provare o tentare di fare in modo che PHP faccia Pagine Angolari "DYNAMIC". E proprio non vedendolo. Avere un client aspetta di caricare ogni singolo elemento e popolare/modifica i modelli. Semplicemente non ti appassiona l'idea di PHP che genera un muro di javascript come quello giusto ancora, e facilmente visualizzabile –

+2

@ShawnRebelo Puoi chiarire un po 'cosa intendi per 'un muro di javascript'? Sono nuovo nel mondo delle API Angular/JS dopo anni di rendering PHP, quindi questa discussione è interessante per me. –

+0

"Piuttosto che visualizzare in PHP una vista pre-renderizzata e usare angolare per la semplice manipolazione DOM ..." - Lascia che ti presenti un [nuovo-vecchio concetto] (http://alistapart.com/article/understandingprogressiveenhancement) . –