Ventajas y desventajas de crear una aplicación web de una sola página [cerrado]

52

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 gran escala. La aplicación es un sistema de gestión de proyectos más adaptado al proceso de desarrollo ágil. Una de las decisiones que debo tomar es si ir o no con 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 algo de estructura a mi código Javascript (jQuery). Parece que mientras backbone.js se puede usar en aplicaciones de varias páginas, brilla más con aplicaciones de una sola página. Estoy tratando de llegar a una lista de ventajas y desventajas de usar un enfoque de diseño de aplicaciones de una sola página. Hasta ahora tengo:

Adventages

  • 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 quiero tener una API para mi aplicación de todos modos. 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 la usará. También significa que a medida que la aplicación crece, la API en sí misma crecerá, ya que eso es lo que utiliza 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 deben ser más rápidas y el servidor hará un poco menos de procesamiento.

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 de negocios en Javascript: no puedo dar ejemplos concretos de por qué esto sería malo, pero no me parece correcto tener una lógica de negocios en Javascript que todos puedan leer.
  • Fugas de memoria de Javascript: ya que la página nunca se vuelve a cargar, las fugas de memoria de Javascript pueden ocurrir, y ni siquiera sabría por dónde empezar a depurarlas.

También hay otras cosas que son como espadas de doble filo. Por ejemplo, con aplicaciones de una sola página, los datos procesados para cada solicitud pueden ser mucho menos, 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 algo 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 el camino que debo seguir para mi proyecto?

    
pregunta ryanzec 16.04.2012 - 19:39

5 respuestas

17

La mayor desventaja es que el cliente debe tener JavaScript habilitado y ser lo suficientemente poderoso como para ejecutar una buena cantidad de él. También es más difícil satisfacer las inquietudes de accesibilidad o cualquier otra cosa que se base en el análisis de HTML estático (aunque algo que sabe que su API específica probablemente puede ser mejor que el raspado de HTML). Finalmente, es más fácil tener pérdidas de memoria significativas.

En cuanto a la duplicación de código o la aplicación de la lógica empresarial en el cliente, no estoy seguro de cuánto debe hacer. Si el modelo en el cliente es un modelo de vista (un modelo que coincide con el mundo tal como lo ve la interfaz de usuario, no un modelo de negocio), entonces la lógica que coincide con el modelo de negocio de ViewModel puede residir en el cliente. 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 UI en llamadas a la API.

Es posible que también quieras mirar knockout.js. No puedo decir si es mejor que la red troncal, pero puede encajar mejor en su proyecto.

    
respondido por el psr 16.04.2012 - 20:29
7

Desventajas que a menudo veo con aplicaciones web de una sola página:

  • No se puede enlazar a una parte específica del sitio, a menudo hay solo un punto de entrada.
  • Botones de avance y retroceso disfuncionales.
  • El uso de pestañas es limitado o inexistente.

(especialmente móvil :)

  • Tarda mucho en cargar.
  • No funciona en absoluto.
  • No se puede volver a cargar una página, una pérdida repentina de la red lo lleva al inicio del sitio.

Todo esto puede solucionarse, pero por lo que he visto, la mayoría de los constructores de sitios no.

    
respondido por el Pieter B 23.01.2014 - 16:54
5

Hay un cliente importante que nunca ejecuta Javascript: rastreador de Google (a partir de 2012) . (Bing's tampoco ejecuta JS, supongo.)

Deberá proporcionar una versión razonable no AJAX de cada página que deba ser indexada, o enlaces a una página que necesite ser indexada.

Si su sitio es pequeño, puede proporcionar versiones muy básicas de las pocas páginas solo para los bots de indexación.

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 no es así, probablemente sea mejor que desarrolle un sitio de varias páginas desde el principio y que solo proporcione actualizaciones de AJAX en las que no cambie el "propósito general" de la página.

    
respondido por el 9000 16.04.2012 - 21:45
3
  

-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 el caso) como en el lado del servidor en javascript.

Estás en el mundo de PHP, pero existen estrategias de generación de código en el mundo .NET para crear proxies de WCF de JavaScript automáticamente. Consulte aquí

No sé qué opciones podrían estar disponibles para no tener que crear tus objetos remotos en JavaScript en una aplicación PHP, pero esta es una opción para aquellos que escriben aplicaciones de una sola página en .NET.

    
respondido por el brian 16.04.2012 - 19:49
0

La elección no tiene que ser la una o la otra. JWt es, por ejemplo, un conjunto de herramientas web que implementa la ilusión perfecta de una página web de varias páginas, pero es una página única. Además, reconocerá los bots y navegadores de Google que no tienen javascript (pruébelo) y cambiará al modelo tradicional de varias páginas cuando los detecte.

En resumen:

  • no es necesario escribir una API (pero aún puedes, si quieres)
  • aplicación receptiva: cada usuario debe hacer clic en un máximo de un viaje de ida y vuelta al servidor (además de obtener imágenes)
  • no hay duplicación de código
  • no hay lógica de negocios del lado del cliente
  • mínima complejidad del lado del cliente
  • los robots de búsqueda pueden indexarlo
respondido por el user52875 24.04.2012 - 10:20

Lea otras preguntas en las etiquetas