Estoy llegando al final de una fase de creación de prototipos / prueba de concepto para un proyecto paralelo en el que estoy trabajando, y estoy tratando de decidir sobre algunas decisiones de diseño de aplicaciones a mayor escala. La aplicación es un sistema de gestión de proyectos adaptado más al proceso de desarrollo ágil. Una de las decisiones que debo tomar es si usar o no una aplicación tradicional de varias páginas o una aplicación de una sola página.
Actualmente mi prototipo es una configuración tradicional de varias páginas, sin embargo, he estado buscando en backbone.js para limpiar y aplicar alguna estructura a mi código Javascript (jQuery). Parece que si bien backbone.js se puede usar en aplicaciones de varias páginas, brilla más con aplicaciones de una sola página. Estoy tratando de encontrar una lista de ventajas y desventajas de usar un enfoque de diseño de aplicaciones de una sola página. Hasta ahora tengo:
Ventajas
Todos los datos deben estar disponibles a través de algún tipo de API; esta es una gran ventaja para mi caso de uso, ya que de todos modos quiero tener una API para mi aplicación. En este momento, alrededor del 60-70% de mis llamadas para obtener / actualizar datos se realizan a través de una API REST. Hacer una aplicación de una sola página me permitirá probar mejor mi API REST ya que la aplicación misma la usará. También significa que a medida que la aplicación crece, la API en sí crecerá, ya que eso es lo que usa la aplicación; no es necesario mantener la API como complemento de la aplicación.
Aplicación más receptiva: dado que todos los datos cargados después de la página inicial se mantienen al mínimo y se transmiten en un formato compacto (como JSON), las solicitudes de datos generalmente deberían ser más rápidas y el servidor procesará un poco menos.
Desventajas
- Duplicación de código, por ejemplo, código de modelo. Voy a tener que crear modelos tanto en el lado del servidor (PHP en este caso) como en el lado del cliente en Javascript.
- Lógica empresarial en Javascript: no puedo dar ejemplos concretos de por qué esto sería malo, pero no me parece correcto tener una lógica empresarial en Javascript que cualquiera pueda leer.
- Pérdidas de memoria de Javascript: dado que la página nunca se recarga, pueden ocurrir pérdidas de memoria de Javascript, y ni siquiera sabría por dónde empezar a depurarlas.
También hay otras cosas que son una especie de espadas de doble filo. Por ejemplo, con aplicaciones de una sola página, los datos procesados para cada solicitud pueden ser mucho menores, ya que la aplicación solicitará los datos mínimos que necesita para la solicitud en particular, sin embargo, también significa que podría haber una solicitud mucho más pequeña para el servidor. No estoy seguro de si eso es bueno o malo.
¿Cuáles son algunas de las ventajas y desventajas de las aplicaciones web de una sola página que debo tener en cuenta al decidir qué camino tomar para mi proyecto?
fuente
Respuestas:
La mayor desventaja es que el cliente debe tener habilitado JavaScript y ser lo suficientemente potente como para ejecutar una buena cantidad de él. También es más difícil satisfacer las preocupaciones de accesibilidad o cualquier otra cosa que se base en analizar HTML estático (aunque algo que conozca su API específica probablemente pueda ser mejor que el raspado de HTML). Finalmente, es más fácil tener pérdidas importantes de memoria.
En cuanto a duplicar código o poner lógica de negocios en el cliente, no estoy seguro de cuánto tiene que hacer. Si el modelo en el cliente es un modelo de vista (un modelo que coincide con el mundo tal como lo ve la IU, no un modelo de negocio), entonces la lógica que coincide con el modelo de vista hasta el modelo de negocio puede residir en el cliente, el servidor, o un poco de ambos. Depende de cómo se sienta acerca de que su API contenga una fachada específica del cliente en lugar de que el cliente traduzca las entradas de la interfaz de usuario en llamadas de API.
También es posible que desee ver knockout.js. No puedo decir si es mejor que la red troncal, pero puede ajustarse mejor a su proyecto.
fuente
Desventajas que a menudo veo con las aplicaciones web de una sola página:
(especialmente móvil :)
Todo esto se puede solucionar, pero por lo que he visto, la mayoría de los creadores de sitios no.
fuente
Hay un cliente muy importante que nunca ejecuta Javascript: el rastreador de Google (a partir de 2012) . (Bing's tampoco ejecuta JS, supongo).
Deberá proporcionar una versión razonable que no sea AJAX de cada página que deba indexarse, o enlaces a una página que deba indexarse.
Si su sitio es pequeño, puede proporcionar versiones muy básicas de las pocas páginas solo para indexar bots.
Si la mayor parte del contenido del sitio es solo para usuarios registrados, o no necesita ser indexado por alguna otra razón, puede crear todo el espacio no indexado como una aplicación de una página, con su propia búsqueda, blackjack, etc.
Si ninguno de estos, probablemente sea mejor desarrollar un sitio de varias páginas desde el principio, y solo proporcionar actualizaciones AJAX donde no cambie el "propósito general" de la página.
fuente
Estás en el mundo de PHP, pero hay estrategias de generación de código en el mundo .NET para crear automáticamente proxies JavaScript WCF. Ver aquí
No sé qué opciones podrían estar disponibles para no tener que crear sus objetos remotos usted mismo en JavaScript en una aplicación PHP, pero esta es una opción para quienes escriben aplicaciones de una sola página en .NET.
fuente
La elección no tiene que ser la una o la otra. JWt es, por ejemplo, un kit de herramientas web que implementa la ilusión perfecta de una página web de varias páginas, pero es una sola página. Además, reconocerá los robots y navegadores de Google que no tienen JavaScript (pruébelo), y cambiará al modelo tradicional de varias páginas cuando los detecte.
En breve:
fuente