Las aplicaciones de una sola página son aplicaciones que dependen en gran medida de JavaScript, con solo una página web que visita que luego carga el resto del contenido usando JavaScript. Entre los ejemplos más destacados se incluyen Gmail y el nuevo twitter.com
En lugar de navegar para separar las URL, estas aplicaciones tienden a actualizar el hash del fragmento (el bit después del #), que conserva la posibilidad de marcar y permite que los botones de retroceso / avance continúen funcionando.
Personalmente, creo que son una idea terrible para casi todos los sitios y aplicaciones. Rompen uno de los contratos más importantes en los que se basa la Web: la idea de que puedo realizar una solicitud HTTP a un servidor, solicitar una ruta específica y recuperar una representación del recurso en esa ruta. Con las aplicaciones de una sola página, obtengo la misma representación para cada recurso, un desagradable blob de JavaScript, y se espera que inicie una implementación completa de JavaScript + DOM para ejecutar y extraer información del recurso.
- ¿Cuáles son las ventajas del servicio web basado en SOAP sobre el servicio web REST Base y viceversa?
- ¿Por qué las aplicaciones web no utilizaron las API RESTful desde el principio de la web, en lugar de las aplicaciones basadas en formularios?
- ¿Cómo debo escalar los proyectos web basados en Django alojados en DigitalOcean?
- ¿Qué se considera un número significativo de usuarios para un producto de Internet de consumo gratuito?
- ¿Flask solo es adecuado para aplicaciones a pequeña escala? ¿Debería usarse Django (o sus equivalentes) en su lugar para aplicaciones a gran escala?
También rompen los códigos de estado HTTP: ya no obtienes un 404 por contenido perdido, obtienes un 200 por todo.
Afortunadamente, la API de historial HTML5 permite crear sitios / aplicaciones que no actualizan la página completa mientras mantienen las URL adecuadas. GitHub es un excelente ejemplo de un sitio que hace esto: haga clic en el navegador del repositorio con JS activado y se actualiza a través de ajax (y también actualiza la barra de URL): visite las mismas páginas con JS desactivado y aún obtendrá el contenido correcto
Lamentablemente, la API de historial HTML5 no está disponible en IE hasta la versión 10.
Mi recomendación: no cree algo como una aplicación de una sola página a menos que esté seguro de comprender completamente las implicaciones de hacerlo. Si lo va a hacer, puede evitar dañar activamente la Web al implementarlo usando la API de historial HTML5, asegurándose de que todo funcione como debería sin JavaScript y permitiendo que IE antes de v10 tenga la versión sin mejorar (la solución GitHub).