Creación de una aplicación web con todas las funciones utilizando un marco API y Javascript

Independientemente de qué framework (s) de Javascript use, crear un sitio / aplicación completo en el front-end es mucho más complejo que hacerlo en el lado del servidor.

Mi suposición, a partir de su pregunta, es que el lado del servidor no tendría estado (suponga API REST). Esto significa que el estado de la aplicación debe administrarse en el lado del cliente (Javascript). Desde el historial del navegador hasta cualquier contenido cargado a través de ajax, todo debe ser mantenido por el front end (piense en lo que sucedería si el usuario vuelve a cargar la página).

Sin embargo, el principal desafío es el mantenimiento. Si bien puede mantener fácilmente un front-end HTML / CSS (cambiar diseños, rediseñar, agregar / eliminar funciones), se vuelve más complejo cuanto más Javascript tiene su sitio. Cuando tiene una aplicación basada en Javascript, esto se vuelve tan complejo como puede ser.

Algunas cosas para pensar antes de codificar:
– Seguridad (autenticación contra su API, etc.)
– Limitaciones de dominio cruzado
– Estado del usuario (autenticación, historial, contenido dinámico …)
– Diseño / mantenimiento de plantillas

Todos estos problemas / preocupaciones no son nada en contra de ember.js. Este marco es probablemente una de las mejores opciones para construir aplicaciones pesadas de JavaScript.

Para escribir una aplicación de página única (SPA) se requiere un conocimiento profundo de JavaScript. Si su experiencia con JavaScript en el pasado es un poco de jQuery y validación de formularios, está en shock. Usted trata el desarrollo de JavaScript con tanto cuidado y respeto como cualquier otro idioma.

La forma en que hace las cosas en SPA es muy diferente a la de su aplicación web normal. En una aplicación del lado del servidor, escrita en algo como PHP o Python, normalmente mezclarías toda tu lógica directamente en tu HTML para producir lo que es esencialmente una vista estática de la página en ese momento. Para actualizar una página, simplemente vuelva a cargarla y obtenga los datos más recientes.

Por supuesto, todos estos viajes de ida y vuelta son una mala experiencia para el usuario. Es por eso que SPA se está convirtiendo en la nueva normalidad. En cambio, con SPA obtiene los datos actualizados usando AJAX y luego usa JavaScript para modificar el Modelo de Objetos del Documento sobre la marcha. (Una pequeña nota al margen aquí, la X en AJAX significa XML, pero la mayoría de las personas usan JSON. Sin embargo, el nombre se ha quedado de todos modos).

Este cambio de paradigma probablemente será una de las mayores barreras. Además, la codificación en JavaScript es muy diferente de la codificación en otros idiomas. Esto se debe a que JavaScript es asíncrono por naturaleza. Mucho de lo que sucede es enganchar eventos, como clics de botones, y luego hacer llamadas asincrónicas al servidor de fondo. Debido a esto, obtienes muchas devoluciones de llamada, que pueden anidarse profundamente si no tienes cuidado. El uso de Promises con una biblioteca como q ayudará a mitigar gran parte de esto.

Las bibliotecas estándar como Ember.js ayudarán a hacer esto más fácil, pero todavía hay muchos conocimientos básicos que debe adquirir antes de ser efectivo.

La creación de aplicaciones simples de una sola página es más simple de lo que parece.
Sugeriría comenzar con Backbonejs, es una pequeña biblioteca con buena documentación y tutoriales. También sugiero que eche un vistazo a TODOMVC, que le muestra cómo implementar una lista de tareas simple usando los diversos marcos existentes.

El mayor obstáculo es escalar de una aplicación simple (como una lista de tareas pendientes) a una aplicación completa. El manejo de la memoria puede (y probablemente lo será) ser un dolor.

Lea los tutoriales sobre las mejores prácticas y sígalos o prepárese para volver a escribir su aplicación.

El mayor beneficio es la experiencia del usuario, las transiciones entre secciones de la aplicación son mucho más fluidas y las acciones (agregar un todo) son mucho más rápidas.

More Interesting

¿En qué situaciones es NoSQL mejor que las bases de datos relacionales como SQL? ¿Cuáles son ejemplos específicos de aplicaciones donde el cambio a NoSQL arrojó ventajas considerables?

¿Cuál es la mejor tecnología para crear una aplicación web multitáctil con necesidades como: rotar, escalar, arrastrar y soltar, etc.?

¿Cuál es la mejor combinación de JavaScript Framework?

¿Qué es Letsapp?

¿Es posible crear una aplicación web usando solo HTML5, CSS3 y JavaScript?

¿Cómo es posible usar Hadoop o Apache Spark en mi aplicación web?

¿Cómo manejan las aplicaciones web financieras la carga causada por la transmisión de precios si cada cliente sigue haciendo llamadas ajax?

¿Dónde puedo encontrar alojamiento web gratuito para sitios web Java + MySQL?

¿Es una violación de derechos de autor si un sitio web de recursos de alto contenido de terceros se carga en un en mi sitio web?

¿Qué enfoque de prueba de automatización es el más adecuado para una aplicación basada en web basada en JSF y PrimeFaces (interfaces de usuario basadas en componentes)?

Para un trabajo de desarrollador de aplicaciones web, ¿tengo que aprender Bootstrap con AngularJS o solo AngularJS está bien?

¿Cuáles son las mejores prácticas para aprender tecnologías web?

¿Qué tan difícil es crear, comercializar y mantener una aplicación web que genere $ 1000 por mes solo con Google Adsense (y otros)?

¿Existe una aplicación web de calendario que sea mejor que Google Calendar en términos de una interfaz de usuario?

¿Cuáles son las ventajas y desventajas del proceso de impresión web?