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.