Superpoderes de la API Web del navegador

Rate this content
Bookmark

Al escribir código para la Web, hay muchas capacidades que se ofrecen de serie por nuestros navegadores. Si alguna vez escribiste un componente de carga de archivos, usaste temporizadores e intervalos, interactuaste con el DOM, o almacenaste algo en el Almacenamiento Local/De Sesión, tuviste que ir a los documentos de la API Web de MDN, para encontrar información relevante sobre cómo implementar ese código.


En esta sesión, nos adentraremos en el emocionante mundo de las APIs Web del navegador que no se utilizan tan comúnmente (aunque deberían) y exploraremos sus increíbles capacidades 🚀


Todas estas características ofrecen nuevas oportunidades para crear experiencias web inmersivas que pueden ayudar a las empresas a crecer y conectar con los clientes.


Así que si eres el tipo de ingeniero que quiere estar a la vanguardia en cuanto a desarrollo web, aprende cómo la API de Observador de Intersección, la API de Sincronización en Segundo Plano, la API de Bloqueo de Pantalla en Vigilia (y muchas más) pueden ayudarte a crear mejores aplicaciones web que mantendrán a los usuarios comprometidos y volverán por más!

This talk has been presented at React Advanced Conference 2023, check out the latest edition of this React Conference.

FAQ

Una WebAPI es una colección de interfaces incorporadas en los navegadores que ofrecen diversas funcionalidades, como geolocalización, manejo de elementos DOM, almacenamiento local, entre otros, facilitando el desarrollo de aplicaciones web.

El 'setTimeout' es un ejemplo de API web que permite ejecutar una función después de esperar un número específico de milisegundos. Durante la espera, el tiempo es manejado por WebAPI mientras el código JavaScript puede continuar ejecutándose sin bloqueos.

El Intersection Observer API es una interfaz que permite configurar un observador para un elemento específico y detectar cuando dicho elemento se intersecta con el viewport. Se utiliza para realizar acciones como cargar contenido de manera diferida o implementar listas de desplazamiento infinito.

El API de Red proporciona información sobre la conexión del sistema y detecta cambios en la red. Es útil para adaptar la experiencia del usuario según el tipo de conexión, permitiendo, por ejemplo, precargar recursos grandes solo si la conexión es rápida.

La API de sincronización en segundo plano permite diferir tareas en segundo plano mientras el dispositivo está offline, a través de un Service Worker. Es útil para acciones como enviar correos o realizar peticiones de red que se completarán una vez que el dispositivo vuelva a estar online.

La API de Canal de Transmisión permite la comunicación bidireccional entre diferentes contextos de la misma origen, como ventanas o pestañas. Esto es útil para acciones como detectar eventos de usuario en diferentes partes de una aplicación o gestionar sesiones de usuario de manera coordinada.

El soporte varía entre diferentes APIs. Mientras algunas como el Intersection Observer tienen amplio soporte en los principales navegadores, otras como el API de Red pueden tener soporte limitado dependiendo del navegador. Es importante verificar la compatibilidad antes de implementar estas APIs en proyectos web.

Nikola Mitrovic
Nikola Mitrovic
23 min
23 Oct, 2023

Comments

Sign in or register to post your comment.
  • Dan Pudsey
    Dan Pudsey
    New Scientist
    I use the IntersectionObserver API for a site header, but I use https://caniuse.com/loading-lazy-attr for lazy loading images. Is there any benefit for using IntersectionObserver over loading="lazy"...?

Video Summary and Transcription

La charla de hoy explora varias APIs Web y sus funcionalidades, incluyendo la API de Observador de Intersección para la visibilidad de elementos, la API de Red para la detección de conexiones, y la API de Sincronización en Segundo Plano para capacidades offline. La API de Canal de Difusión permite la comunicación entre componentes y el Beacon, las APIs de Discurso Web, Compartir Web, Bloqueo de Pantalla en Vigilia, Visibilidad de Página, Recogida en Segundo Plano y Autenticación Web ofrecen funcionalidades adicionales. Estas APIs estandarizadas funcionan en todos los navegadores y pueden mejorar el rendimiento mientras reducen el consumo de electricidad.

1. Introducción a las Web APIs y Ejemplo del Astronauta

Short description:

Hoy vamos a hablar sobre las Web APIs y sus funcionalidades proporcionadas por el navegador. Podemos aprovechar estas interfaces incorporadas para mejorar nuestras aplicaciones web. Vamos a explorar algunas APIs nuevas o no tan conocidas que ofrecen superpoderes. Soy Nikola Mitrovic, Líder de Desarrollo e Ingeniero de Software en Vega IT. En nuestro primer ejemplo, tenemos una página con un pequeño astronauta que muestra un mensaje cuando es completamente visible mientras se desplaza.

¡Hola React Advanced Londres! Bienvenidos a la charla de hoy. Les doy una cálida bienvenida. Hoy vamos a hablar de algo llamado Web APIs. Pero antes de hacer eso, necesitamos dar un pequeño paso atrás y volver a algunos conceptos básicos de JavaScript. Probablemente esta es una pregunta clásica de entrevista y si les pregunto cuál es la respuesta, la mayoría de ustedes diría que el orden de estos registros sería 1, 3, 2, ¿verdad? Pero, ¿cómo saben eso? ¿Cómo podemos saber eso? Así que vamos a visualizar un poco este ejemplo y a comprobarlo.

Como sabemos, hay una pila de llamadas. Nuestro motor comienza a ejecutar línea por línea. Console.log es asincrónico y se ejecuta inmediatamente, pero el set timeout es asincrónico, así que necesita dar una vuelta. Espera un número de milisegundos que ponemos en un callback. Va a la cola. Esperamos que la pila de llamadas esté libre de nuevo, y luego el bucle de eventos se activa con el valor que nosotros pusimos dentro del callback. Pero la pregunta es, ¿dónde espera setTimeout esos número de milisegundos? Y la respuesta es, WebAPI. Si eres un ingeniero curioso como yo, podrías preguntar en ese punto, OK, ¿qué es la WebAPI? Y si buscamos un poco en Google, podemos descubrir que hay una documentation de MDN sobre WebAPI, y el setTimeout está bajo la pestaña, WebAPI. Si revisamos allí, podemos ver que hay una serie de funcionalidades disponibles que los navegadores nos ofrecen de serie. Y si exploramos un poco allí, podemos encontrar muchas APIs conocidas. Como, por ejemplo, si alguna vez construiste un componente de carga de archivos, si alguna vez usaste geolocalización, si alguna vez te comunicaste con alteraciones de elementos DOM, si usaste almacenamiento local, almacenamiento de sesión. Así que todas esas APIs son funcionalidades que son proporcionadas por el navegador. Por supuesto, hay algunas APIs conocidas y algunas funcionalidades conocidas que estás usando en tu trabajo diario. Pero me preguntaba cuáles son algunas de las nuevas APIs o las no tan conocidas que podemos aprovechar en nuestras aplicaciones web y realmente usar estos superpoderes? Así que podemos concluir que WebAPI es una colección de esas interfaces incorporadas que podemos usar simplemente utilizando el navegador.

Primero, me presentaré rápidamente. Mi nombre es Nikola Mitrovic. Trabajo como Líder de Desarrollo e Ingeniero de Software en Vega IT, con sede en Novi Sad, Serbia. Y estos son mis destacados de WebAPI para ustedes para hoy. Vamos a nuestro primer ejemplo para hoy. Digamos que tenemos una aplicación como esta. Tenemos una página. Cuando nos desplazamos un poco hacia abajo, entonces empezamos a notar que hay un pequeño astronauta en la parte inferior, en la esquina. Y si nos desplazamos un poco más, una vez que el astronauta es completamente visible, dice: Hola Mundo. Si nos desplazamos un poco hacia arriba y el astronauta no es completamente visible, el mensaje desaparece. Si nos desplazamos un poco hacia abajo de nuevo,

2. Uso de la API Intersection Observer

Short description:

La API Intersection Observer ayuda a determinar si un elemento es visible en la página al verificar si se cruza con el viewport. En React, podemos crear un hook llamado UseVisible para observar elementos. Este hook toma una referencia al elemento y un objeto de configuración para el Intersection Observer. Podemos establecer el margen y el umbral para la intersección. Al establecer el umbral en 1, observamos cuando el elemento está completamente visible. El hook devuelve una variable de estado, isVisible, que indica si el elemento es visible o no.

él dice de nuevo, Hola Mundo. Bien, ¿cómo logramos hacer esto? Existe una API llamada Intersection Observer API, que básicamente determina si el elemento es visible en la página o no, si está intersectando el viewport. Si estamos haciendo esto dentro de un React, probablemente construiríamos un hook, llamémoslo UseVisible y el código se vería así. El hook acepta dos parámetros, uno es la referencia de un elemento que estamos intentando observar y hay un objeto de configuración para el Intersection Observer. Esa configuración puede tener el ancestro del objetivo, si pasamos el null, entonces estamos asumiendo que estamos usando el viewport como un elemento padre. Podemos establecer el margen alrededor de ese elemento y llamar a esa intersección un poco antes, y hay un umbral que es un número del 0 al 1. Como lo establecimos en 1, observamos cuando un elemento está completamente visible, por lo que podemos intersectar digamos a la mitad de la visibilidad. Tendríamos un estado isVisible, por supuesto, y luego instanciamos un objeto observador de intersección. Dentro de un callback obtendríamos un objeto de entrada, y esa entrada tiene una propiedad llamada isIntersecting. Así que, básicamente, en base a eso, podemos averiguar si el elemento es visible o no, ese valor sería verdadero o falso. Lo que queda por hacer es simplemente observar ese elemento. Y luego al final, por supuesto, establecemos el estado y lo devolvemos, y obtendríamos de ese hook simplemente

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

Un Marco para Gestionar la Deuda Técnica
TechLead Conference 2023TechLead Conference 2023
35 min
Un Marco para Gestionar la Deuda Técnica
Top Content
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.
Construyendo un Asistente AI Activado por Voz con Javascript
JSNation 2023JSNation 2023
21 min
Construyendo un Asistente AI Activado por Voz con Javascript
Top Content
This Talk discusses building a voice-activated AI assistant using web APIs and JavaScript. It covers using the Web Speech API for speech recognition and the speech synthesis API for text to speech. The speaker demonstrates how to communicate with the Open AI API and handle the response. The Talk also explores enabling speech recognition and addressing the user. The speaker concludes by mentioning the possibility of creating a product out of the project and using Tauri for native desktop-like experiences.
Solucionando Problemas de Rendimiento en React
React Advanced Conference 2023React Advanced Conference 2023
22 min
Solucionando Problemas de Rendimiento en React
Top Content
This Talk discusses various strategies to improve React performance, including lazy loading iframes, analyzing and optimizing bundles, fixing barrel exports and tree shaking, removing dead code, and caching expensive computations. The speaker shares their experience in identifying and addressing performance issues in a real-world application. They also highlight the importance of regularly auditing webpack and bundle analyzers, using tools like Knip to find unused code, and contributing improvements to open source libraries.
Una Guía Práctica para Migrar a Componentes de Servidor
React Advanced Conference 2023React Advanced Conference 2023
28 min
Una Guía Práctica para Migrar a Componentes de Servidor
Top Content
React query version five is live and we'll be discussing the migration process to server components using Next.js and React Query. The process involves planning, preparing, and setting up server components, migrating pages, adding layouts, and moving components to the server. We'll also explore the benefits of server components such as reducing JavaScript shipping, enabling powerful caching, and leveraging the features of the app router. Additionally, we'll cover topics like handling authentication, rendering in server components, and the impact on server load and costs.
De Monolito a Micro-Frontends
React Advanced Conference 2022React Advanced Conference 2022
22 min
De Monolito a Micro-Frontends
Top Content
Microfrontends are considered as a solution to the problems of exponential growth, code duplication, and unclear ownership in older applications. Transitioning from a monolith to microfrontends involves decoupling the system and exploring options like a modular monolith. Microfrontends enable independent deployments and runtime composition, but there is a discussion about the alternative of keeping an integrated application composed at runtime. Choosing a composition model and a router are crucial decisions in the technical plan. The Strangler pattern and the reverse Strangler pattern are used to gradually replace parts of the monolith with the new application.

Workshops on related topic

Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Node Congress 2024Node Congress 2024
152 min
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Featured Workshop
Emanuel Scirlet
Miguel Henriques
2 authors
Ven y aprende cómo puedes potenciar tus aplicaciones modernas y seguras utilizando GraphQL y Javascript. En este masterclass construiremos una API de GraphQL y demostraremos los beneficios del lenguaje de consulta para APIs y los casos de uso para los que es adecuado. Se requiere conocimiento básico de Javascript.
Construyendo una Aplicación de Shopify con React & Node
React Summit Remote Edition 2021React Summit Remote Edition 2021
87 min
Construyendo una Aplicación de Shopify con React & Node
Top Content
WorkshopFree
Jennifer Gray
Hanna Chen
2 authors
Los comerciantes de Shopify tienen un conjunto diverso de necesidades, y los desarrolladores tienen una oportunidad única para satisfacer esas necesidades construyendo aplicaciones. Construir una aplicación puede ser un trabajo duro, pero Shopify ha creado un conjunto de herramientas y recursos para ayudarte a construir una experiencia de aplicación sin problemas lo más rápido posible. Obtén experiencia práctica construyendo una aplicación integrada de Shopify utilizando el CLI de la aplicación Shopify, Polaris y Shopify App Bridge.Te mostraremos cómo crear una aplicación que acceda a la información de una tienda de desarrollo y pueda ejecutarse en tu entorno local.
Construye una sala de chat con Appwrite y React
JSNation 2022JSNation 2022
41 min
Construye una sala de chat con Appwrite y React
WorkshopFree
Wess Cope
Wess Cope
Las API/Backends son difíciles y necesitamos websockets. Utilizarás VS Code como tu editor, Parcel.js, Chakra-ui, React, React Icons y Appwrite. Al final de este masterclass, tendrás los conocimientos para construir una aplicación en tiempo real utilizando Appwrite y sin necesidad de desarrollar una API. ¡Sigue los pasos y tendrás una increíble aplicación de chat para presumir!
Problemas difíciles de GraphQL en Shopify
GraphQL Galaxy 2021GraphQL Galaxy 2021
164 min
Problemas difíciles de GraphQL en Shopify
WorkshopFree
Rebecca Friedman
Jonathan Baker
Alex Ackerman
Théo Ben Hassen
 Greg MacWilliam
5 authors
En Shopify a gran escala, resolvemos algunos problemas bastante difíciles. En este masterclass, cinco oradores diferentes describirán algunos de los desafíos que hemos enfrentado y cómo los hemos superado.

Tabla de contenidos:
1 - El infame problema "N+1": Jonathan Baker - Vamos a hablar sobre qué es, por qué es un problema y cómo Shopify lo maneja a gran escala en varios APIs de GraphQL.
2 - Contextualizando APIs de GraphQL: Alex Ackerman - Cómo y por qué decidimos usar directivas. Compartiré qué son las directivas, qué directivas están disponibles de forma predeterminada y cómo crear directivas personalizadas.
3 - Consultas de GraphQL más rápidas para clientes móviles: Theo Ben Hassen - A medida que tu aplicación móvil crece, también lo harán tus consultas de GraphQL. En esta charla, repasaré diversas estrategias para hacer que tus consultas sean más rápidas y efectivas.
4 - Construyendo el producto del futuro hoy: Greg MacWilliam - Cómo Shopify adopta las características futuras en el código actual.
5 - Gestión efectiva de APIs grandes: Rebecca Friedman - Tenemos miles de desarrolladores en Shopify. Veamos cómo estamos asegurando la calidad y consistencia de nuestras APIs de GraphQL con tantos colaboradores.
De 0 a Autenticación en una Hora para tu Aplicación JavaScript
JSNation 2023JSNation 2023
57 min
De 0 a Autenticación en una Hora para tu Aplicación JavaScript
WorkshopFree
Asaf Shen
Asaf Shen
La autenticación sin contraseña puede parecer compleja, pero es fácil de agregar a cualquier aplicación utilizando la herramienta adecuada.
Mejoraremos una aplicación JS de pila completa (backend Node.js + frontend Vanilla JS) para autenticar usuarios con contraseñas de un solo uso (correo electrónico) y OAuth, incluyendo:
- Autenticación de usuario: Gestión de interacciones de usuario, devolución de JWT de sesión / actualización- Gestión y validación de sesiones: Almacenamiento seguro de la sesión para solicitudes posteriores del cliente, validación / actualización de sesiones
Al final del masterclass, también abordaremos otro enfoque para la autenticación de código utilizando Flujos de Descope en el frontend (flujos de arrastrar y soltar), manteniendo solo la validación de sesión en el backend. Con esto, también mostraremos lo fácil que es habilitar la biometría y otros métodos de autenticación sin contraseña.