Dovrei mescolare AngularJS con un framework PHP? [chiuso]


161

AngularJS è molto potente quando si tratta di HTML5 interattivo e associazione di modelli. D'altro canto, i framework PHP come Yii consentono uno sviluppo di applicazioni Web rapido, ben strutturato, sicuro e potente. Entrambe le tecnologie offrono mezzi sofisticati per l'accesso ai dati, iterazione e impaginazione.

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

Non sto parlando di generare JS usando PHP ( Vedi questa domanda ) - Sto parlando di generare una vista che utilizzerà AngularJS.

So anche che una pagina AngularJS dovrebbe (o può) comunicare con il server tramite i servizi REST per ottenere dati ( Vedi questa domanda ) invece di recuperarli direttamente dalle variabili PHP, ad esempio. Ma a me sembra più conveniente progettare il "frame" per l'intera applicazione web separatamente in PHP (ad es. Creare il menu principale o gestire autorizzazioni / sessioni ecc.)


28
Ottima domanda Vorrei che ci fosse una posizione StackExchange progettata per questo tipo di domanda. Sono abituato a PHP e ho un progetto cURL per la raccolta di molti dati da solo, e credo che un framework JavaScript sulla libreria si adatterebbe perfettamente al mio progetto. Il mio problema è come il tuo, voglio sapere qual è una buona pratica (lati positivi e negativi) insieme a quali parti fai cadere dal progetto originale (PHP) ecc. Credo che queste conversazioni possano sollecitare il dibattito, ma come possiamo arrivare al miglior unione delle due lingue senza una conversazione.
Shane,

Ho alcuni progetti di AngularJS che sto riconvertendo in PHP / Jquery. Ho avuto infiniti problemi con il funzionamento angolare con un'ampia varietà di dispositivi mobili e browser. Angolare è difficile da SEO e Google non è suo amico. Ho visto siti con il posizionamento migliore svanire le SERPS a causa del passaggio ad angolari ...
HappyCoder

Risposte:


180

Sembra che tu ti senta più a tuo agio con lo sviluppo in PHP che ti consenta di non sfruttare appieno il potenziale con le applicazioni web.

È davvero possibile avere PHP renderial parziali e viste complete, ma non lo consiglierei.

Per sfruttare appieno le possibilità di HTML e javascript per creare un'applicazione Web, ovvero una pagina Web che agisce più come un'applicazione e si basa fortemente sul rendering lato client, è necessario considerare la possibilità che il client mantenga tutte le responsabilità di gestione dello stato e della presentazione. Sarà più facile da mantenere e sarà più facile da usare.

Ti consiglierei di pensare più a tuo agio in un approccio più incentrato sulle API. Piuttosto che avere PHP in uscita una vista pre-renderizzata e usare angolare per la semplice manipolazione del DOM, dovresti considerare di avere il back-end PHP in uscita i dati che dovrebbero essere agiti su RESTFully e avere Angular presente.

Utilizzo di PHP per eseguire il rendering della 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 incentrato sull'API emettendo JSON in questo modo:

api/auth/

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

e in Angular potresti fare un get e gestire il lato client di risposta.

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

Mescolare lato client e lato server nel modo in cui hai proposto potrebbe essere adatto a progetti più piccoli in cui la manutenzione non è importante e tu sei il singolo autore, ma mi spingo più verso il modo incentrato sull'API poiché questa sarà una separazione più corretta delle preoccupazioni e essere più facile da mantenere.


2
A semplice di un esempio. Io stesso stavo cercando qualcosa di più di un semplice login super duper che tutti fanno. Grande differenza quando hai PHP / HTML e variabili <td> $ name </td> su <td> {{name}} </td> e poi '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 realizzi pagine angolari "DINAMICHE". E proprio non vedendolo. Far attendere un client per caricare ogni singolo elemento e popolare / modificare i modelli. Non mi piace l'idea di PHP che genera un wall di javascript come quello ancora e facilmente visualizzabile
Shawn Rebelo,

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

"Piuttosto che avere PHP in uscita una vista pre-renderizzata, e usa l'angolazione per la semplice manipolazione del DOM ..." - Lascia che ti presenti un nuovo vecchio concetto .
Dissident Rage,

È esattamente come dovrebbe essere, un'API riposante dal back-end può essere qualsiasi lingua e un'app angolare per il front-end può funzionare indipendentemente dal back-end.
Amir Savand,

3
Quello che non riesco a capire è perché dovrei caricare una pagina generica con segnaposto e quindi caricare una parte con uno o più requisiti asincroni per ottenere qualcosa che avevo già caricato nella prima pagina come i dati utente / autenticazione?
Tobia,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.