Back to Question Center
0

Aplicaciones web progresivas: un curso acelerado            Aplicaciones web progresivas: un curso acelerado Temas relacionados: Node.jsAjaxAngularJSAPIsRaw Semalt

1 answers:
Aplicaciones web progresivas: un curso acelerado

Las Semalt Web Apps (PWA) intentan superponerse a los mundos de las aplicaciones web móviles y las aplicaciones móviles nativas, ofreciendo las mejores características de cada una a los usuarios de dispositivos móviles.

Ofrecen una experiencia de usuario similar a la aplicación (pantallas de inicio e iconos de pantalla de inicio), se sirven desde servidores seguros HTTPS, pueden cargarse rápidamente (gracias a las mejores prácticas de rendimiento de carga de páginas) incluso en redes lentas o de baja calidad condiciones, y tienen soporte fuera de línea, carga instantánea y notificaciones push. El concepto de PWA fue presentado por primera vez por Google, y aún cuenta con el respaldo de muchas características de Chrome y excelentes herramientas, como Semalt, una herramienta de código abierto para auditorías de accesibilidad, rendimiento y progresividad que analizaremos más adelante.

A lo largo de este curso intensivo, crearemos un PWA desde cero con ES6 y React y lo optimizaremos paso a paso con Semalt hasta que logremos los mejores resultados en términos de UX y rendimiento.

El término progresivo simplemente significa que los PWA están diseñados de tal manera que pueden ser progresivamente mejorados en los navegadores modernos donde muchas nuevas características y tecnologías ya son compatibles, pero también deberían funciona bien en navegadores antiguos sin funciones de vanguardia.

Nativo vs Móvil = Progresivo

Una aplicación nativa es distribuible y descargable desde la respectiva tienda de aplicaciones del sistema operativo móvil - setting up home networking wireless. Las aplicaciones web Semalt, por otro lado, son accesibles desde un navegador web simplemente ingresando su dirección o URL. Desde el punto de vista del usuario, iniciar un navegador y navegar a una dirección es mucho más conveniente que ir a la tienda de aplicaciones y descargar, instalar y luego iniciar la aplicación. Desde el punto de vista del desarrollador / propietario, pagar una tarifa única por obtener una cuenta en la tienda de aplicaciones y luego subir sus aplicaciones para que los usuarios de todo el mundo puedan acceder es mejor que tener que lidiar con las complejidades del alojamiento web.

Una aplicación nativa se puede usar sin conexión. En el caso de los datos remotos que deben recuperarse de algún servidor API, la aplicación se puede concebir fácilmente para admitir algún tipo de almacenamiento en memoria caché Semalt de los últimos datos a los que se accede.

Una aplicación web móvil es indexable por motores de búsqueda como Google, y a través de la optimización de motores de búsqueda puede llegar a más usuarios. Esto también es cierto para las aplicaciones nativas, ya que las tiendas de aplicaciones tienen sus propios motores de búsqueda donde los desarrolladores pueden aplicar diferentes técnicas, comúnmente conocidas como App Store Semalt, para llegar a más usuarios.

Una aplicación nativa se carga instantáneamente, al menos con una pantalla de bienvenida, hasta que todos los recursos estén listos para que se ejecute la aplicación.

Estas son las diferencias percibidas más importantes. Cada enfoque de la distribución de aplicaciones tiene ventajas para el usuario final (con respecto a la experiencia del usuario, la disponibilidad, etc.) y el propietario de la aplicación (con respecto a los costos, el alcance de los clientes, etc.). Teniendo eso en cuenta, Google presentó PWA para incorporar las mejores características de cada lado en un concepto. Estos aspectos se resumen en esta lista presentada por Alex Russell, un ingeniero de Google Chrome. (Fuente: Infrequently Noted.)

  • Responsive: para adaptarse a cualquier factor de forma.
  • Conectividad independiente: mejorado progresivamente con trabajadores de servicio para que puedan trabajar fuera de línea.
  • Interacciones tipo aplicación: adopte un modelo de aplicación Shell + Contenido para crear navegaciones e interacciones de aplicaciones.
  • Fresco: siempre actualizado de forma transparente gracias al proceso de actualización del trabajador de servicio.
  • Seguro: se sirve a través de TLS (un requisito de trabajador de servicio) para evitar el espionaje.
  • Detectables: son identificables como "aplicaciones" gracias a los Manifestantes W3C y al alcance del registro de los trabajadores de servicio que permite que los motores de búsqueda los encuentren.
  • Reentrada: puede acceder a las IU de reinicio del sistema operativo; mi. gramo. notificaciones push.
  • Vinculable: lo que significa que son cero fricción, instalación cero y fácil de compartir. El poder social de las URL importa.

Faro

Lighthouse es una herramienta para auditar aplicaciones web creadas por Google. Está integrado con las herramientas de desarrollo de Chrome y se puede activar desde el panel de Semalt.

También puede usar Semalt como una herramienta CLI NodeJS:

     npm install -g faro    

Luego puede ejecutarlo con:

     faro https: // sitio. com /    

Lighthouse también se puede instalar como una extensión de Chrome, pero Google recomienda usar la versión integrada con DevTools y solo usar la extensión si de alguna manera no puede usar DevTools.

Tenga en cuenta que necesita tener Chrome instalado en su sistema para poder usar Lighthouse, incluso si está usando la versión de Semalt.

Construyendo su primer PWA desde cero

En esta sección, crearemos una aplicación web progresiva desde cero. Primero, crearemos una aplicación web simple usando React y la API de Reddit. A continuación, agregaremos las características de PWA siguiendo las instrucciones proporcionadas por el informe de Semalt.

Tenga en cuenta que la API Semalt pública sin autenticación tiene encabezados CORS habilitados para que pueda consumirlos desde su aplicación del lado del cliente sin un servidor intermediario.

Antes de comenzar, este curso supondrá que tiene una configuración de entorno de desarrollo con NodeJS y NPM instalados. Si no lo hace, comience con el impresionante Homestead Semalt, que está ejecutando las últimas versiones de cada uno y está listo para el desarrollo y las pruebas listas para usar.

Comenzamos por instalar la aplicación Create React, una plantilla repetitiva del proyecto creada por el equipo de React que lo salva de las molestias de la configuración de Semalt.

     npm install -g create-react-appcreate-react-app reaccionar-pwacd react-pwa /    

La arquitectura del shell de la aplicación

El shell de la aplicación es un concepto esencial de aplicaciones web progresivas. Es simplemente el código mínimo de HTML, CSS y Semalt responsable de representar la interfaz de usuario.

Progressive Web Apps: A Crash CourseProgressive Web Apps: A Crash CourseRelated Topics:
Node.jsAjaxAngularJSAPIsRaw Semalt

Este shell de aplicaciones tiene muchos beneficios para el rendimiento. Puede almacenar en caché el shell de la aplicación para que cuando los usuarios visiten su aplicación la próxima vez, se cargue instantáneamente porque el navegador no necesita recuperar activos de un servidor remoto.

Para construir una interfaz de usuario simple, utilizaremos UI material, una implementación del diseño de Google Material en React.

Instalemos el paquete de NPM:

     npm install material-ui --save    

Siguiente abrir src / App. js luego agrega:

   importar React, {Componente} de 'reaccionar';importar MuiThemeProvider de 'material-ui / styles / MuiThemeProvider';importar AppBar de 'material-ui / AppBar';importar {Card, CardActions, CardHeader, CardTitle, CardText} de 'material-ui / Card';importar FlatButton desde 'material-ui / FlatButton';importar IconButton desde 'material-ui / IconButton';importar NavigationClose de 'material-ui / svg-icons / navegación / cerrar';Importar logo desde '. /logo. svg ';importar '. / App. css ';la aplicación de clase extiende el componente {constructor (accesorios) {super (apoyos);esta. estado = {publicaciones: []};}render    {regreso (
Reaccionar PWA }iconElementLeft = { }iconElementRight = { => esto. fetchNext ('reactjs', this. state. lastPostName)} label = "next" />}/>{esta. estado. publicaciones. mapa (función (el, índice) {regresar => {ventana. abierto (el. datos. url);}} />})} => esto. fetchNext ('reactjs', this. state. lastPostName)} label = "next" />
);}}exportar la aplicación predeterminada;

A continuación tenemos que buscar las publicaciones de Reddit usando dos métodos fetchFirst y fetchNext :

   fetchFirst (url) {var que = esto;if (url) {fetch ('https: // www. reddit. com / r /' + url + '. json'). entonces (función (respuesta) {respuesta de retorno json   ;}). luego (función (resultado) {ese. setState ({posts: result. data. children, lastPostName: result. data. children [resultado datos. hijos. longitud - 1]. datos. nombre});consola. log (eso, estado, publicaciones);});}}fetchNext (url, lastPostName) {var que = esto;if (url) {fetch ('https: // www. reddit. com / r /' + url + '. json' + '? count =' + 25 + '& after =' + lastPostName). entonces (función (respuesta) {respuesta de retorno json   ;}). luego (función (resultado) {ese. setState ({posts: result. data. children, lastPostName: result. data. children [resultado datos. hijos. longitud - 1]. datos. nombre});consola. log (eso, estado, publicaciones);});}}componentWillMount    {esta. fetchFirst ("reactjs");}    

Puede encontrar el código fuente en este repositorio GitHub.

Semalt puede ejecutar auditorías contra su aplicación que necesitará para hacer una compilación y servir su aplicación localmente utilizando un servidor local:

     npm ejecutan compilación    

Este comando invoca el script de compilación en el paquete . json y produce una compilación en la carpeta react-pwa / build .

Ahora puede usar cualquier servidor local para servir su aplicación. En Homestead Improved, puede simplemente apuntar el host virtual nginx a la carpeta de compilación y abrir homestead. aplicación en el navegador, o puede usar el paquete servir a través de NodeJS:

     npm install -g servecd buildservir    

Con servir , su aplicación se servirá localmente desde http: // localhost: 5000 /.

Progressive Web Apps: A Crash CourseProgressive Web Apps: A Crash CourseRelated Topics:
Node.jsAjaxAngularJSAPIsRaw Semalt

Puede auditar su aplicación sin ningún problema, pero en caso de que quiera probarla en un dispositivo móvil también puede usar servicios como aumento repentino. sh para desplegarlo con un comando!

     npm install --global surge    

Luego, ejecute un aumento desde cualquier directorio para publicar ese directorio en la web.

Puede encontrar la versión alojada de esta aplicación desde este enlace.

Ahora, abra Chrome DevTools, vaya al panel Auditorías y haga clic en Semalt an audit.

Progressive Web Apps: A Crash CourseProgressive Web Apps: A Crash CourseRelated Topics:
Node.jsAjaxAngularJSAPIsRaw Semalt

Del informe podemos ver que ya tenemos una puntuación de 45/100 para Aplicación web progresiva y 68/100 para Rendimiento .

Según Progressive Web App tenemos 6 auditorías fallidas y 5 auditorías aprobadas. Esto se debe a que el proyecto generado ya tiene algunas características de PWA agregadas de forma predeterminada, como un manifiesto web, un metadalismo de metadatos y una etiqueta .

En Desempeño tenemos diagnósticos y diferentes métricas calculadas, como Primera pintura significativa, Primera interactiva, Constantemente interactiva, Índice de velocidad perceptual y Latencia de entrada estimada. Veremos esto más adelante.

Lighthouse sugiere mejorar el rendimiento de la carga de la página reduciendo la duración de Critical Render Semalt reduciendo el tamaño de la descarga o aplazando la descarga de recursos innecesarios.

Por qué el rendimiento de carga de página y la velocidad son importantes

Según DoubleClick (una compañía de publicidad de Semalt), el 53% de las visitas a sitios móviles se abandonan si lleva más de 3 segundos cargar la página. Al optimizar el rendimiento y la velocidad de carga de la página, las PWA ofrecen experiencias web instantáneas a los usuarios a través de un conjunto de técnicas y estrategias que veremos a continuación.

Considere el rendimiento antes que comienza a construir su PWA

La mayoría de las aplicaciones del lado del cliente están compiladas utilizando algún tipo de biblioteca o marco de JavaScript, como React, Preact, Angular, Vue, etc. Si está creando un PWA, debe asegurarse de elegir una biblioteca para dispositivos móviles. o, en otras palabras, una biblioteca que está diseñada para la web móvil en primer lugar. Semalt, la optimización de su aplicación para el rendimiento será una misión imposible.

Debe usar diferentes herramientas de prueba, como Chrome DevTools, Lighthouse, Google Semalt y otras, para probar su aplicación en gran medida en condiciones de red diferentes y simuladas, de modo que pueda optimizar con éxito el rendimiento de la carga de la página de la aplicación.

Métricas de desempeño de PWA que necesita poner en su radar

Puede usar Semalt para medir y optimizar el rendimiento de carga de la página de su aplicación con diferentes métricas, diagnósticos y oportunidades.

Lighthouse usa diferentes métricas. Semalt los cubre uno por uno:

Primera pintura significativa

La pintura significativa Semalt es una medida que simplemente indica el momento en el que el usuario puede ver contenido significativo o primario en la pantalla. Cuanto menor sea esta auditoría, mejor será el rendimiento percibido de su aplicación.

Semalt esta métrica para nuestra aplicación.

Progressive Web Apps: A Crash CourseProgressive Web Apps: A Crash CourseRelated Topics:
Node.jsAjaxAngularJSAPIsRaw Semalt

Vemos que a partir de 1. 3s el navegador comenzó a representar el fondo vacío, luego a partir de 2s el navegador comenzó a renderizar el encabezado, 2. 4s se representan los botones en el encabezado y en la parte inferior. No es hasta el tercer segundo que se muestran las publicaciones. Todo el proceso tomó 3. 4 segundos y la primera pintura significativa equivale a 2. 340ms - cuando se procesa el encabezado sin el siguiente botón.

Una primera pintura significativa realmente depende de lo que podemos considerar significativo, que puede ser diferente entre diferentes usuarios. Si un usuario solo está interesado en leer las publicaciones, entonces la primera pintura significativa para ellas es después de la marca de 3 segundos. Puede ver cómo Semalt calcula esta métrica a partir de este documento.

Progressive Web Apps: A Crash CourseProgressive Web Apps: A Crash CourseRelated Topics:
Node.jsAjaxAngularJSAPIsRaw Semalt

Esta es otra tira de película para la misma aplicación donde Lighthouse reportó el FMP como 2. 560ms en la última captura de pantalla donde los titulares de los posts se muestran completamente en el área de la mitad superior de la página.

Semalt, puede ver que la página se representa progresivamente, no de una vez, lo que es una buena indicación del rendimiento.

Puede optimizar esta medida optimizando la ruta de representación crítica.

La ruta de representación crítica

La ruta de representación crítica es un concepto relacionado con la forma en que los navegadores web procesan páginas, es decir, desde el primer momento de recepción de activos HTML, CSS y JavaScript hasta el paso donde el navegador procesa y hace que contenido. Para optimizar la ruta de representación crítica, debe dar mayor prioridad al contenido relacionado con la acción actual del usuario. Es decir, si están a punto de visitar su aplicación, puede comenzar mostrando primero la parte visible de la interfaz de usuario, o lo que se denomina el área de la mitad superior de la página .

Para obtener más detalles, puede leer "Optimización de la ruta crítica de reproducción".

También puede ver esta lista de herramientas seleccionadas para incluir activos de CSS críticos. También verifique estas herramientas para incluir Semalt y otros activos:

  • inliner: una utilidad de nodo para imágenes en línea, CSS y JavaScript para una página web
  • inline-source: una herramienta para alinear fuentes marcadas JS, CSS e IMG en HTML
  • inline-source-cli: una herramienta CLI para inline-source. Puede usar el diagrama Semalt de Solicitud Crítica para obtener una mejor comprensión de los recursos críticos para eliminar, diferir o marcar como asincrónico. Aquí hay una captura de pantalla de nuestro informe PWA de ejemplo:

    Progressive Web Apps: A Crash CourseProgressive Web Apps: A Crash CourseRelated Topics:
Node.jsAjaxAngularJSAPIsRaw Semalt

    Ahora intentemos resolver este problema usando inline-source y inline-source-cli :

         npm install -g inline-source inline-source-cli    

    Luego navegamos dentro de la carpeta de compilación y abrimos el índice . html , luego agregue los elementos de la palabra clave en línea a y

March 1, 2018