web-dev-qa-db-fra.com

Devrais-je mélanger AngularJS avec un framework PHP?

AngularJS est très puissant en matière de HTML5 interactif et de liaison de modèle. D'autre part, PHP frameworks tels que Yii permettent un développement d'applications Web rapide, bien structuré, sûr et puissant. Les deux technologies fournissent des moyens sophistiqués pour l’accès aux données, l’itération et la mise en page.

Est-ce une bonne ou une mauvaise pratique de mélanger ces deux approches ("mise en page" côté client et côté serveur) ou est-ce plutôt contraire à la signification d'applications web HTML5\transparentes et transparentes AJAX?

Je ne parle pas de générer JS en utilisant PHP ( Voir cette question ) - Je parle de générer une vue qui utilisera AngularJS.

Je sais également qu'une page AngularJS doit (ou peut) communiquer avec le serveur via REST services pour obtenir des données ( Voir cette question ) au lieu de les récupérer, par exemple, PHP variables directement. Mais il me semble plus pratique de concevoir le "cadre" pour l’application Web entière séparément dans PHP (par exemple, créer le menu principal ou gérer l’autorisation/les sessions, etc.).

157
Dani

Il semble que vous soyez peut-être plus à l'aise avec le développement de PHP, ce qui vous empêche d'utiliser le plein potentiel des applications Web.

Il est en effet possible que PHP rende les partiels et les vues entières, mais je ne le recommanderais pas.

Pour exploiter pleinement les possibilités du HTML et du javascript afin de créer une application Web, c'est-à-dire une page Web qui s'apparente davantage à une application et qui repose fortement sur le rendu côté client, vous devez envisager de laisser au client toute responsabilité en matière de gestion de l'état et de la présentation. Ce sera plus facile à maintenir et plus convivial.

Je vous recommanderais de penser plus à l'aise dans une approche plus centrée sur les API. Plutôt que d’avoir PHP en sortie une vue prédéfinie et d’utiliser angular pour une simple manipulation DOM, vous devriez envisager de faire en sorte que le back-end PHP produise les données qui devraient être agi sur RESTFully et l’a Angular présentée.

En utilisant PHP pour rendre la vue:

/user/account

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

Comment le même problème peut être résolu avec une approche centrée sur les API en générant JSON comme ceci:

api/auth/

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

et dans Angular, vous pouvez effectuer un get et gérer le côté client de la réponse.

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

Pour mélanger à la fois le côté client et le côté serveur de la manière que vous avez proposée peut être adaptée à des projets plus petits où la maintenance n'est pas importante et que vous êtes le seul auteur, mais que je me penche davantage sur la méthode centrée sur l'API, car il s'agira d'une séparation plus correcte des points de vue et du contenu. être plus facile à entretenir.

177
Kenneth Lynne