Mejora Progresiva: Qué es y qué no es, una introducción práctica con Svelte

Rate this content
Bookmark

La Mejora Progresiva es la filosofía de proporcionar una experiencia básica y funcional a todos, independientemente del dispositivo, y agregar capas adicionales de interactividad y deleite a medida que son compatibles. La última década de desarrollo web, centrándose en las SPAs, donde JavaScript es un requisito indispensable, ha hecho que esta filosofía sea muy difícil: ¿cómo hacemos sitios web que están fundamentalmente construidos con JavaScript accesibles para usuarios sin él? Esta charla examina la filosofía detrás de la Mejora Progresiva, luego se centra en algunos ejemplos concretos (¡incluyendo una inmersión en la salida del compilador de Svelte!) de cómo podemos construir experiencias funcionales, confiables y utilizables para todos, agregando interactividad encantadora para aquellos que pueden admitirla.

FAQ

Elliott Johnson es un ingeniero de software en Versell que trabaja en el departamento de crecimiento. Además, ayuda a mantener Svelte y SvelteKit en su tiempo libre.

Antes de dedicarse a la ingeniería de software, Elliott Johnson comenzó su carrera profesional como analista de inteligencia de negocios y luego se trasladó a la arquitectura de datos analítica.

La mejora progresiva es una filosofía de diseño que proporciona una base de contenido y funcionalidad esenciales para tantos usuarios como sea posible, mientras ofrece la mejor experiencia posible solo a los usuarios con navegadores modernos que pueden ejecutar todo el código requerido.

En la práctica, la mejora progresiva se logra construyendo una experiencia base con características de HTML, CSS y JavaScript ampliamente compatibles, y luego mejorándolas mediante técnicas como ejecución de código en el servidor, detección de compatibilidad de características y uso de polyfills.

La mejora progresiva y la degradación elegante son técnicas complementarias: la mejora progresiva comienza con una base funcional y mejora la experiencia donde es posible, mientras que la degradación elegante comienza con todas las funciones y proporciona alternativas donde no son compatibles.

Elliott utiliza meta-frameworks como SvelteKit, que adoptan un enfoque orientado al SSR (Server-Side Rendering), y herramientas para detectar la compatibilidad de características antes de usarlas para mejorar la experiencia del usuario de manera progresiva.

Elliott Johnson desarrolló una aplicación que genera acrónimos aleatorios usando un clasificador de Bayes ingenuo para crear combinaciones más humorísticas y relevantes, facilitando la generación de acrónimos para comentarios de aprobación en solicitudes de extracción.

La aplicación de acrónimos de Elliott está diseñada para funcionar eficientemente incluso en conexiones de Internet lentas, mostrando un nuevo acrónimo cada vez que se ingresa y permitiendo compartir el acrónimo específico mediante un enlace.

Elliott Johnson
Elliott Johnson
21 min
05 Jun, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La mejora progresiva es una estrategia que proporciona una experiencia básica para todos los usuarios, al tiempo que la mejora para aquellos con navegadores modernos. La detección de características y la degradación elegante son enfoques complementarios para lograr esto. Los polyfills pueden emular la funcionalidad del navegador en navegadores antiguos. La mejora progresiva se trata de satisfacer las necesidades del usuario teniendo en cuenta el rendimiento. La construcción de aplicaciones en SvelteKit permite un desarrollo fácil de aplicaciones con mejora progresiva. Los componentes de Svelte y el contenido del DOM proporcionan una forma conveniente de estructurar y actualizar la interfaz de usuario. El envío de formularios y la mejora progresiva se pueden lograr habilitando la carga y el procesamiento de archivos cuando JavaScript está desactivado.

1. Introducción a la Mejora Progresiva

Short description:

Soy Elliott Johnson, un ingeniero de software en Versell, especializado en desarrollo front-end. La mejora progresiva es una estrategia que he encontrado efectiva en la construcción de aplicaciones que brindan una experiencia básica para todos los usuarios, al tiempo que la mejora para aquellos con navegadores modernos. Implica el uso de características de HTML, CSS y JavaScript ampliamente compatibles y mejorarlos mediante el renderizado en el lado del servidor y la detección de características.

Soy Elliott Johnson y estoy muy contento de que hayas elegido estar aquí conmigo hoy. Un gran agradecimiento a los organizadores de la Conf de JS Nation por su arduo trabajo en la coordinación de todo y por permitirme hablar.

Para presentarme, soy un ingeniero de software en Versell que trabaja en nuestro departamento de crecimiento. En mi tiempo libre, ayudo a mantener Svelte y SvelteKit. Comencé mi vida profesional como analista de inteligencia de negocios y luego pasé a la arquitectura de datos analítica. Fue en este momento que me di cuenta de que eso no era realmente lo que quería hacer y comencé mi largo camino hacia la ingeniería de software, terminando como ingeniero front-end con una cantidad incómoda de experiencia en el backend.

El espacio front-end es muy diferente a cualquiera de los espacios en los que trabajé antes, especialmente en lo que respecta al soporte de características. En otros espacios, esto no es tan importante. Cuando controlas el hardware y el software, simplemente puedes implementar lo que quieras en su mayor parte. Si necesitas más ancho de banda, simplemente cómpralo. Si necesitas más potencia de procesamiento, simplemente actualiza tu instancia. Si necesitas una nueva versión, actualiza tu software. Sin embargo, en el espacio front-end, estás enviando código a lugares que no puedes controlar. A Dan con una conexión lenta. O a Carla con un teléfono de diez años que no puede permitirse reemplazar. O a Ebenezer, el dueño de toda la última tecnología que puede ejecutar cualquier cosa que le arrojes. A alguien en un país en desarrollo donde el mejor teléfono que pueden permitirse es equivalente a hardware de hace diez años. Estas personas experimentarán los sitios que escribo de diferentes maneras, y si no escribo mi aplicación teniendo en cuenta a todos ellos, degradaré su experiencia.

Pero escribir aplicaciones de esta manera es un desafío. Requiere comprender HTML, CSS, JavaScript y todas las demás tecnologías web que estaban más allá de mí incluso el año pasado. Una estrategia que he encontrado para lidiar con esto y que me ha cautivado últimamente es la mejora progresiva. A partir de MDN, la mejora progresiva es una filosofía de diseño que proporciona una base de contenido y funcionalidad esenciales para tantos usuarios como sea posible, al tiempo que ofrece la mejor experiencia posible solo a los usuarios de los navegadores más modernos que pueden ejecutar todo el código requerido. En resumen, podemos decir que la mejora progresiva tiene como objetivo proporcionar una experiencia funcional básica para tantos usuarios como sea posible, mejorando esta experiencia para aquellos cuya tecnología lo admite. En la práctica, esto se logra generalmente construyendo una experiencia base utilizando características de HTML, CSS y JavaScript ampliamente compatibles, y luego mejorándolas de varias formas. La primera es ejecutar código en el servidor. Nos alejamos brevemente de esto como industria con la llegada de aplicaciones de una sola página. Pero, más recientemente, este enfoque ha vuelto a ganar gran popularidad con nuevos meta-frameworks como SvelteKit o Next.js que adoptan un enfoque más orientado a SSR en el desarrollo web. La siguiente forma es detectar si las características son compatibles antes de usarlas. Normalmente, usaríamos alguna construcción como la consulta addSupports en CSS para ver si una característica de CSS es compatible.

2. Detección de características y degradación elegante

Short description:

Puedes lograr lo mismo a través de JavaScript utilizando CSS.supports. Hay bibliotecas para la detección de características que puedes usar. Otra forma es no detectar si se admiten características adicionales, sino estar preparado para que fallen y volver a opciones predeterminadas mejor admitidas cuando lo hagan. Esto se conoce técnicamente como degradación elegante, no mejora progresiva, pero son básicamente lo mismo en direcciones opuestas, y son tan complementarios que me gusta agruparlos juntos.

Puedes lograr lo mismo a través de JavaScript utilizando CSS.supports. Hay bibliotecas para la detección de características que puedes usar. También puedes utilizar métodos específicos de detección de características.

Entonces, por ejemplo, si quisieras usar la API de geolocalización, podrías verificar si la clave geolocalización está definida en el objeto Navigator. Hay muchas formas de hacerlo, pero lo importante es pensar en que quieres usar esta característica. Sé que no es compatible con muchos navegadores. Tal vez sea muy nueva. Probablemente debería verificar si está presente antes de usarla.

Pero en algunas circunstancias, eso no es realmente realista. Podríamos estar usando una biblioteca que accede a características de esta manera de forma algo impredecible y realmente no tenemos forma de envolver todo eso en comprobaciones de seguridad para proporcionar fallbacks y mejoras. Entonces, otra forma de hacer esto es no detectar si se admiten características adicionales, sino estar preparado para que fallen y volver a opciones predeterminadas mejor admitidas cuando lo hagan. Esto se conoce técnicamente como degradación elegante, no mejora progresiva, pero son básicamente lo mismo en direcciones opuestas, y son tan complementarios que me gusta agruparlos juntos. Si eso te ofende, es una lástima.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Diseño Dirigido por Dominio con Aplicaciones Vue
Vue.js London 2023Vue.js London 2023
14 min
Diseño Dirigido por Dominio con Aplicaciones Vue
Top Content
Introducción al Diseño Dirigido por Dominio- ¿Qué es DDD?- Principios clave de DDD- Beneficios de usar DDD en el desarrollo de aplicaciones webModelado de Dominio en Aplicaciones Vue 3- Cómo diseñar e implementar modelos de dominio en Vue 3- Estrategias para integrar la lógica de dominio con el modelo de datos reactivo de Vue y la arquitectura basada en componentesMejores Prácticas para Implementar DDD en Vue 3- Estrategias para organizar el código de una manera que siga los principios de DDD- Técnicas para reducir el acoplamiento entre la lógica de dominio y la lógica de la aplicación- Consejos para probar y depurar la lógica de dominio en las aplicaciones Vue 3
UX Asincrónico
React Advanced Conference 2021React Advanced Conference 2021
21 min
UX Asincrónico
Top Content
"Por favor, no cierre ni abandone esta página" puede enviar escalofríos por tu espalda, pero codificar el flujo UX adecuado para async podría hacerte cuestionar tu trabajo diario. ¿Cómo podemos manejar adecuadamente el UX para el código asincrónico en aplicaciones altamente responsivas? Vamos a explorar cómo la introducción de código asincrónico crea un desafío para el UX.
Las animaciones en React Native deben ser divertidas
React Advanced Conference 2022React Advanced Conference 2022
28 min
Las animaciones en React Native deben ser divertidas
¿Tienes miedo de las animaciones? Bueno, no deberías, React Native Reanimated te tiene cubierto. Tu aplicación móvil puede contar una historia a través de las animaciones, puede ayudar a los usuarios mediante microinteracciones y diferenciar tu aplicación de las demás.
Cómo compartir código entre una aplicación web de React y una aplicación móvil de React Native en Monorepo
React Summit 2022React Summit 2022
7 min
Cómo compartir código entre una aplicación web de React y una aplicación móvil de React Native en Monorepo
Por lo general, crear aplicaciones web y móviles requiere diferentes conjuntos de tecnologías, y es bastante difícil compartir código. Esta charla mostrará cómo agregué una aplicación web de React y una aplicación móvil de React Native en el mismo monorepo utilizando Nx, y cómo optimicé el intercambio de código entre la aplicación web de React y la aplicación móvil de React Native.
La próxima ola de frameworks web es BYOJS
JSNation 2022JSNation 2022
23 min
La próxima ola de frameworks web es BYOJS
El desarrollo de aplicaciones web ha tenido muchos cambios a lo largo de la vida de la web. Desde aplicaciones del lado del servidor con un toque de JavaScript hasta aplicaciones de una sola página construidas completamente con JavaScript. Ahora estamos volviendo a donde muchos nuevos frameworks web se construyen primero de forma estática, con JavaScript agregado según sea necesario. Esta charla cubre la construcción de aplicaciones web con JavaScript a través de la lente de Astro, un generador de sitios estáticos donde la elección del framework de JavaScript es única para ti.
Remixando Cómo Donamos
Remix Conf Europe 2022Remix Conf Europe 2022
32 min
Remixando Cómo Donamos
Una revisión de cómo estamos utilizando Remix en Daffy.org para cambiar la forma en que las personas donan a organizaciones benéficas.
Hablaremos sobre por qué decidimos usar Remix, cómo lo hemos utilizado y migrado desde nuestra aplicación frontend anterior, y algunos patrones y bibliotecas que hemos desarrollado internamente.

Workshops on related topic

Accesibilidad web en aplicaciones JavaScript
React Summit 2022React Summit 2022
161 min
Accesibilidad web en aplicaciones JavaScript
Workshop
Sandrina Pereira
Sandrina Pereira
A menudo vemos que JavaScript daña la accesibilidad de un sitio web. En esta masterclass, aprenderás cómo evitar errores comunes y cómo utilizar JS a tu favor para mejorar la accesibilidad de tus aplicaciones web.
En esta masterclass exploraremos múltiples ejemplos del mundo real con problemas de accesibilidad, y aprenderás cómo hacer que funcionen para las personas que utilizan un mouse o un teclado. También aprenderás cómo se utilizan los lectores de pantalla, ¡y te mostraré que no hay razón para tener miedo de usar uno!
Únete a mí y déjame mostrarte cómo la accesibilidad no limita tus soluciones o habilidades. ¡Al contrario, las hace más inclusivas!
Al final, serás capaz de:- Comprender los principios de WCAG y cómo están organizados- Conocer casos comunes en los que JavaScript es esencial para la accesibilidad- Crear enlaces, botones y elementos conmutables inclusivos- Utilizar regiones en vivo para errores y estados de carga- Integrar la accesibilidad en el flujo de trabajo de tu equipo de inmediato- Darte cuenta de que crear sitios web accesibles no es tan difícil como parece ;)
Construye una Biblioteca Universal de Datos Reactiva con Starbeam
JSNation 2023JSNation 2023
66 min
Construye una Biblioteca Universal de Datos Reactiva con Starbeam
WorkshopFree
Yehuda Katz
Yehuda Katz
Esta sesión se centrará en los bloques de construcción universales de Starbeam. Usaremos Starbeam para construir una biblioteca de datos que funcione en múltiples frameworks.Escribiremos una biblioteca que almacene en caché y actualice datos, y admita relaciones, ordenación y filtrado.En lugar de obtener datos directamente, funcionará con datos obtenidos de forma asíncrona, incluidos los datos obtenidos después de la representación inicial. Los datos obtenidos y actualizados a través de web sockets también funcionarán bien.Todas estas características serán reactivas, por supuesto.Imagina que filtras tus datos por su título y luego actualizas el título de un registro para que coincida con el filtro: cualquier resultado que dependa de los datos filtrados se actualizará para reflejar el filtro actualizado.En 90 minutos, construirás una increíble biblioteca de datos reactiva y aprenderás una nueva herramienta poderosa para construir sistemas reactivos. La mejor parte: la biblioteca funciona en cualquier framework, incluso si no piensas en (o dependes de) ningún framework al construirla.
Tabla de contenidos- Almacenar un registro obtenido en una celda- Almacenar múltiples registros en un Mapa reactivo- La iteración reactiva es una iteración normal- El filtrado reactivo es un filtrado normal- Obtener más registros y actualizar el Mapa- La ordenación reactiva es una ordenación normal (¿se está volviendo un poco repetitivo?)- Modelar la invalidación de la caché como datos- Bonus: relaciones reactivas
Construye aplicaciones Web3 con React
React Summit 2022React Summit 2022
51 min
Construye aplicaciones Web3 con React
WorkshopFree
Shain Dholakiya
Shain Dholakiya
El masterclass está diseñado para ayudar a los desarrolladores Web2 a comenzar a construir para Web3 utilizando el Hyperverse. El Hyperverse es un mercado abierto de módulos inteligentes construidos por la comunidad, auditados y fáciles de descubrir. Nuestro objetivo es hacer que sea fácil para los desarrolladores de React construir aplicaciones Web3 sin escribir una sola línea de código de contrato inteligente. Piensa en 'npm para contratos inteligentes'.
Aprende más sobre el Hyperverse aquí.
Repasaremos todos los conceptos básicos de blockchain/crypto que necesitas saber para comenzar a construir en el Hyperverse, por lo que no necesitas tener ningún conocimiento previo sobre el espacio Web3. Solo necesitas tener experiencia en React.
Construyendo Aplicaciones Web Modernas impulsadas por CMS con Strapi el CMS Headless de código abierto
React Advanced Conference 2021React Advanced Conference 2021
159 min
Construyendo Aplicaciones Web Modernas impulsadas por CMS con Strapi el CMS Headless de código abierto
Workshop
Daniel Madalitso Phiri
Daniel Madalitso Phiri
En esta masterclass, construiremos un sitio web completamente funcional y un blog integrado con Next.js y Strapi.

Tabla de contenidos:
- Una introducción a los CMS Headless y las arquitecturas compatibles
- Puesta en marcha con Strapi y Next.js
- Integración de la funcionalidad de blog en una aplicación Next.js
- Despliegue de tus aplicaciones Next.js y Strapi (Bonus)
- Implementación de vistas previas de contenido con Next.js

Requisitos previos:Conocimientos básicos de React Conocimientos básicos de Node.js y npm Conceptos básicos de la web.