¿Debo mezclar AngularJS con un framework PHP? [cerrado]

161

AngularJS es muy poderoso cuando se trata de HTML5 interactivo y enlace de modelos. Por otro lado, los marcos PHP como Yii permiten el desarrollo rápido, bien estructurado, seguro y potente de aplicaciones web. Ambas tecnologías proporcionan medios sofisticados para acceso a datos, iteración y diseño de página.

¿Es una buena o mala práctica mezclar esos dos enfoques ("configuración de página" del lado del cliente y del lado del servidor) o es más bien contrario al significado de las aplicaciones web HTML5 AJAX interactivas e integradas?

No estoy hablando de generar JS usando PHP ( Ver esta pregunta ), estoy hablando de generar una vista que haga uso de AngularJS.

También sé que una página de AngularJS debe (o puede) comunicarse con el servidor a través de los servicios REST para obtener datos ( consulte esta pregunta ) en lugar de recuperarlos, por ejemplo, directamente de las variables de PHP. Pero para mí me parece más conveniente diseñar el "marco" para toda la aplicación web por separado en PHP (por ejemplo, construir el menú principal o manejar autorizaciones / sesiones, etc.)

Dani
fuente
28
Gran pregunta Desearía que hubiera una ubicación StackExchange diseñada para este tipo de pregunta. Estoy acostumbrado a PHP y tengo un proyecto cURL para recopilar muchos datos yo mismo, y creo que un marco de JavaScript sobre la biblioteca encajaría bien en mi proyecto. Mi problema es como el tuyo, quiero saber qué es una buena práctica (ventajas y desventajas) junto con qué partes eliminas del proyecto original (PHP), etc. Creo que estas conversaciones podrían solicitar debate, pero ¿cómo podemos llegar al La mejor combinación de los dos idiomas sin una conversación.
Shane
Tengo algunos proyectos de AngularJS que estoy convirtiendo de nuevo a PHP / Jquery. He tenido un sinfín de problemas para obtener angular para trabajar con una amplia variedad de dispositivos móviles y navegadores. Angular es difícil de SEO y Google no es su amigo. He visto sitios con una clasificación superior desaparecer los SERPS debido al cambio a angular ...
HappyCoder

Respuestas:

180

Parece que puede sentirse más cómodo con el desarrollo en PHP, lo que permite que esto evite utilizar todo el potencial con las aplicaciones web.

De hecho, es posible que PHP represente vistas parciales y completas, pero no lo recomendaría.

Para aprovechar al máximo las posibilidades de HTML y JavaScript para crear una aplicación web, es decir, una página web que actúa más como una aplicación y depende en gran medida de la representación del lado del cliente, debe considerar dejar que el cliente mantenga toda la responsabilidad de administrar el estado y la presentación. Esto será más fácil de mantener y será más fácil de usar.

Le recomendaría que se sienta más cómodo pensando en un enfoque más centrado en API. En lugar de que PHP genere una vista renderizada previamente, y use angular para la simple manipulación DOM, debe considerar que el backend de PHP muestre los datos que deben actuar sobre RESTFully y que Angular lo presente.

Usando PHP para representar la vista:

/user/account

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

Cómo se puede resolver el mismo problema con un enfoque centrado en API al generar JSON de esta manera:

api/auth/

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

y en Angular podría hacer un get y manejar el lado del cliente de respuesta.

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

Para combinar tanto el lado del cliente como el del servidor, la forma que propuso puede ser adecuada para proyectos más pequeños donde el mantenimiento no es importante y usted es el único autor, pero me inclino más hacia la forma centrada en la API, ya que esto será una separación más correcta de las conserjes y lo hará Ser más fácil de mantener.

Kenneth Lynne
fuente
2
A simple de un ejemplo. Yo mismo estaba buscando algo más que un inicio de sesión básico súper duper que todos hacen. Gran diferencia cuando tienes PHP / HTML y variables <td> $ name </td> sobre <td> {{name}} </td> y luego 'app.run (function ($ rootScope) {$ rootScope.name = "Ari Lerner";}); ' Yo mismo estoy tratando de ver / encontrar la ventaja de intentar o intentar que PHP haga páginas angulares 'DINÁMICAS'. Y simplemente no verlo. Hacer que un cliente espere para cargar cada elemento individual y llenar / cambiar las plantillas. Simplemente no estoy interesado en la idea de que PHP genere un muro de javascript como ese por el momento y sea fácilmente visible
Shawn Rebelo
2
@ShawnRebelo ¿Puedes aclarar un poco a qué te refieres a wall of javascript? Soy nuevo en el mundo de Angular / JS API después de años de renderizado PHP, por lo que esta discusión es interesante para mí.
Dan Nissenbaum
"En lugar de que PHP genere una vista renderizada previamente, y use angular para la simple manipulación del DOM ..." - Permítanme presentarles un concepto nuevo y antiguo .
Disident Rage
Así es exactamente como debería ser, una API tranquila desde el backend puede ser cualquier idioma y una aplicación angular para el front-end puede funcionar independientemente del backend.
Amir Savand
3
Lo que no puedo entender es por qué debería cargar una página genérica con marcadores de posición y luego cargar una parte con una o más solicitudes asíncronas para obtener algo que ya tenía en la primera página, como datos de usuario / autenticación.
Tobia