Surprise! Svelte Secretly Sending Signals

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Svelte 5 introdujo runas que utilizan señales bajo el capó. Mientras que las señales son muy geniales y desbloquean un montón de posibilidades de composabilidad, tienen sus propias complicaciones... ¡explorémoslas mientras creamos un sistema reactivo basado en señales desde cero para realmente entenderlas desde la base!

This talk has been presented at JSNation 2025, check out the latest edition of this JavaScript Conference.

Paolo Ricciuti
Paolo Ricciuti
28 min
12 Jun, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Bienvenido a una masterclass sobre Surprise! Svelte Secretly Sending Signals por Paolo Ricciuti, que muestra codificación en vivo con una demostración de reactividad en Svelte utilizando tiendas escribibles y la API de proxy. La API de proxy en Svelte permite interceptar operaciones de objetos para mejorar la reactividad. La gestión eficiente del estado, el manejo de eventos y la gestión de dependencias son temas clave discutidos. Se cubren estrategias para gestionar dependencias, manejar efectos actuales y reales, limpiar conjuntos, programar funciones de manera eficiente y manejar la limpieza de memoria de señales en Svelte. La masterclass también aborda marcos basados en señales, soluciones a problemas asíncronos y enfoques alternativos como Solid para manejar señales secuencialmente.

1. Introducción a la Reactividad de Svelte y la API Proxy

Short description:

Bienvenidos a una charla sobre ¡Sorpresa! Svelte Secretly Sending Signals de Paolo Ricciuti de Campobasso, Italia. Es un embajador de Svelte y mantenedor, un ingeniero de software senior, y ofrece servicios de aumento de equipo. Paolo muestra codificación en vivo con una demostración de reactividad en Svelte utilizando tiendas escribibles y presenta la API proxy.

Bienvenidos, a todos, a mi charla. Se llama ¡Sorpresa! Svelte Secretly Sending Signals. Antes de comenzar, se debe hacer una pequeña presentación. ¿Quién soy? Soy Paolo Ricciuti. Vengo de Campobasso, Italia, la tierra de la pizza. Y me puedes encontrar en BlueSky como paolo.ricciuti.me o en GitHub como Paolo Ricciuti. Soy un embajador de Svelte y un mantenedor de Svelte, y trabajo como ingeniero de software senior en es súper genial, porque puedo trabajar con Svelte pero también enseñar Svelte, tanto en meetups como en conferencias, así como esta, pero también en mi trabajo diario porque hacemos lo que se llama aumento de equipo, lo que significa que nos unimos a tu equipo, te ayudamos a contratar, te enseñamos Svelte y las mejores prácticas. Incluso hacemos masterclasses. Así que si quieres, puedes escanear este código QR y también obtener el código JS Nation 25 para un 25% de descuento. Y también tenemos un servicio de API de suscripción, no servicio de API, para que si no tienes un proyecto completo, básicamente obtienes acceso a nuestra experiencia, como, en Slack, y puedes básicamente, como, pedirnos que revisemos un código y cosas así.

Pero es hora de la demostración, porque esto será 100% codificado en vivo, porque aparentemente me odio a mí mismo. Así que cambiemos a VS Code, donde nos encontramos con la demostración más inútil. Es un contador que no funciona a menos que mantengas la fiesta en marcha. Y luego puedes, como, escribir aquí, y se actualizará en la parte superior. Pero lo interesante es cómo está todo conectado. Así que esto está conectado con la forma antigua de hacer reactividad en archivos JavaScript en Svelte, que es con una tienda escribible. La tienda escribible es básicamente el patrón de observador, y puedes ver una implementación aquí. Son, como, 20 líneas de código. Y cómo lo usas también es muy simple. Como, solo declaras el estado escribible, y puedes suscribirte a él, y esta función se invocará cada vez que cambie el estado. Y luego, como, este es un proyecto vanilla, así que estás conectando el botón, el listener de clics, y así es como actualizas el estado, que es...

Pero veamos la implementación. Así que pasas un valor inicial, almacenas el valor aquí, y luego tienes un conjunto de suscriptores, y aquí, un conjunto es solo un array elegante sin repeticiones. Y luego tienes una función de suscripción que toma una función como entrada, la almacena en el suscriptor, la invoca con el valor actual, y luego devuelve una función para desuscribirse. Luego tienes la función set que simplemente, como, establece el nuevo valor, como, el valor al nuevo valor, y luego recorre cada suscriptor y llama a la función con el valor. La función de actualización es aún más fácil porque solo llama a la función set. Y el valor que estás pasando es esta función get new value. Ahora, como puedes ver, usar la tienda, los escribibles, no es realmente bonito. Y Svelte es famoso por su vibra, como, queremos hacer las cosas más simples. Así que permíteme presentarte la API proxy.

2. Enhancing Reactivity with Proxy API in Svelte

Short description:

La API proxy en Svelte permite interceptar operaciones de objetos utilizando trampas como get y set. Al usar proxies, puedes implementar efectos secundarios y mejorar la reactividad en tus objetos.

Así que puedo hacer const P es igual a un nuevo proxy. La API proxy es muy simple, y básicamente, obtienes un objeto como este, y luego el segundo argumento es en realidad una serie de trampas. Y al igual que un proxy de red donde puedes interceder en una solicitud, puedes básicamente interceder en operaciones en tu objeto. Por ejemplo, existe la trampa get, y en la trampa get, obtienes el objetivo y la clave que estás tratando de acceder. Y puedes devolver target en key para target en key para el valor predeterminado. Pero también puedes agregar, no sé, console.log obteniendo la clave. Y si haces esto, y necesito algo aquí. Si haces esto, y si intento hacer console.log p.name, y si guardo, puedes ver que en este caso, estoy obteniendo el valor, que es Paolo, y estoy obteniendo el nombre, que es una especie de efecto secundario. Pero en lo que realmente estamos interesados es en la función set. Así que puedes obtener un objetivo, la clave y el valor. Y obviamente, puedes obtener el comportamiento predeterminado con target en key es igual a value. Necesitas devolver true, de lo contrario, obtendrás un error. Pero incluso aquí, puedes hacer algún efecto secundario, básicamente. Así que si guardo, y si hago p.name es igual a JS nation, y guardo, puedes ver que estamos obteniendo establecer nombre, JS nation, y luego estamos obteniendo el valor real. Así que básicamente, podemos reemplazar estos con nuestra función set. Y así, en lugar de devolver este objeto, podemos hacer return new proxy.

Ahora, necesitamos pasar un objeto en este caso. Así que no podemos pasar valores literales más. En Svelte, no tenemos esta limitación porque es un compilador. Así que puedo eliminar esto porque, dado que es un objeto, el usuario puede acceder al objeto directamente ya que es una referencia. Y aquí puedo básicamente hacer set, obtengo el objetivo, obtengo la clave, obtengo el valor, y luego puedo básicamente hacer lo mismo que estaba haciendo aquí. Así que puedo básicamente establecer el target en key igual a value para actualizar el valor. Necesito devolver true como he guardado. Y luego podemos simplemente llamar a nuestra lista de suscriptores, la función nuevamente. Así que, obviamente, puedes notar que ahora tenemos un problema porque no tenemos una forma de suscribirnos a ello. Así que por el momento, hagamos algo sucio y devolvamos una tupla. Y el primer argumento será nuestra función de suscripción. Así que básicamente, puedo hacer exactamente esto dentro de esta función. Y, obviamente, ya no necesito el valor porque no está allí. Ahora, podemos actualizar nuestro código ahora para que podamos eliminar todos estos.

QnA

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

Documentación Full Stack
JSNation 2022JSNation 2022
28 min
Documentación Full Stack
Top Content
The Talk discusses the shift to full-stack frameworks and the challenges of full-stack documentation. It highlights the power of interactive tutorials and the importance of user testing in software development. The Talk also introduces learn.svelte.dev, a platform for learning full-stack tools, and discusses the roadmap for SvelteKit and its documentation.
Estrella del Norte
JSNation US 2024JSNation US 2024
29 min
Estrella del Norte
Top Content
As a child, the speaker was fascinated with space and finding direction. Svelte is an HTML-first approach to web development that simplifies tasks and offers efficient reactivity. The speaker reflects on Svelte's growth, goals, and design philosophy. Svelte aims to fix broken software and prioritize user focus. The future direction includes error boundaries, better debugging, and AI's role. Building open source software is challenging, and Rust's impact is discussed. The speaker values framework diversity and highlights the advancements and challenges faced by web development.
El Viento y las Olas: La formación de Olas de Framework desde el Epicentro
JSNation 2022JSNation 2022
19 min
El Viento y las Olas: La formación de Olas de Framework desde el Epicentro
Top Content
Our understanding of innovation is wrong. Innovations are not introduced by a single point of light. The story of who invented the computer is not linear. Many steps forward led to the development of the computer. Angular has shaped and influenced multiple JavaScript waves, and Angular v14 simplifies development with standalone components.
Mejora Progresiva: Qué es y qué no es, una introducción práctica con Svelte
JSNation 2023JSNation 2023
20 min
Mejora Progresiva: Qué es y qué no es, una introducción práctica con Svelte
Progressive enhancement is a strategy that provides a baseline experience for all users while enhancing it for those with modern browsers. Feature detection and graceful degradation are complementary approaches to achieve this. Polyfills can emulate new browser functionality in old browsers. Progressive enhancement is about meeting user needs while considering performance. Building apps in SvelteKit allows for easy development of progressively enhanced apps. Svelte components and DOM content provide a convenient way to structure and update the UI. Form submission and progressive enhancement can be achieved by enabling file upload and processing when JavaScript is disabled.

Workshops on related topic

Construir con SvelteKit y GraphQL
GraphQL Galaxy 2021GraphQL Galaxy 2021
140 min
Construir con SvelteKit y GraphQL
Top Content
Workshop
Scott Spence
Scott Spence
¿Alguna vez has pensado en construir algo que no requiera mucho código de plantilla con un tamaño de paquete pequeño? En esta masterclass, Scott Spence irá desde el hola mundo hasta cubrir el enrutamiento y el uso de endpoints en SvelteKit. Configurarás una API de GraphQL en el backend y luego usarás consultas de GraphQL con SvelteKit para mostrar los datos de la API de GraphQL. Construirás un proyecto rápido y seguro que utiliza las características de SvelteKit, y luego lo desplegarás como un sitio completamente estático. Este curso es para los curiosos de Svelte que no han tenido una experiencia extensa con SvelteKit y quieren una comprensión más profunda de cómo usarlo en aplicaciones prácticas.

Tabla de contenidos:
- Inicio e introducción a Svelte
- Inicializar el proyecto frontend
- Recorrido por el proyecto esqueleto de SvelteKit
- Configurar el proyecto backend
- Consultar datos con GraphQL
- Recuperación de datos en el frontend con GraphQL
- Estilización
- Directivas de Svelte
- Enrutamiento en SvelteKit
- Endpoints en SvelteKit
- Despliegue en Netlify
- Navegación
- Mutaciones en GraphCMS
- Envío de mutaciones GraphQL a través de SvelteKit
- Preguntas y respuestas
Desarrollando Blogs Dinámicos con SvelteKit & Storyblok: Una Masterclass Práctica
JSNation 2023JSNation 2023
174 min
Desarrollando Blogs Dinámicos con SvelteKit & Storyblok: Una Masterclass Práctica
Top Content
WorkshopFree
Alba Silvente Fuentes
Roberto Butti
2 authors
Esta masterclass de SvelteKit explora la integración de servicios de terceros, como Storyblok, en un proyecto SvelteKit. Los participantes aprenderán cómo crear un proyecto SvelteKit, aprovechar los componentes de Svelte y conectarse a APIs externas. La masterclass cubre conceptos importantes incluyendo SSR, CSR, generación de sitios estáticos y despliegue de la aplicación usando adaptadores. Al final de la masterclass, los asistentes tendrán una sólida comprensión de la construcción de aplicaciones SvelteKit con integraciones de API y estarán preparados para el despliegue.
Construyendo con SvelteKit y GraphQL
JSNation 2022JSNation 2022
170 min
Construyendo con SvelteKit y GraphQL
Workshop
Scott Spence
Scott Spence
¿Quieres familiarizarte con el marco de trabajo que ocupó el primer lugar como el marco de trabajo más querido en la encuesta de desarrolladores de Stack Overflow en 2021?Svelte es un marco de trabajo súper versátil sin virtual DOM, a diferencia de React y Vue. Es un compilador que convierte tus proyectos en HTML, CSS y JavaScript puro.Este masterclass cubrirá los conceptos básicos de la configuración con SvelteKit y la consulta de datos desde una API de GraphQL, utilizando esos datos en SvelteKit para obtener datos para su uso en el cliente (navegador).Aprendizajes clave:Cómo utilizar SvelteKit para construir un proyecto simple, obtener datos desde una API de GraphQL y mostrarlos en el cliente. Se cubrirán muchos de los conceptos fundamentales de Svelte y SvelteKit en este masterclass.
Construye una aplicación frontend completa con Svelte
React Summit 2020React Summit 2020
192 min
Construye una aplicación frontend completa con Svelte
Workshop
Mikhail Kuznetsov
Mikhail Kuznetsov
Svelte es un nuevo y prominente framework de JS que expone la filosofía de "escribir menos, hacer más". Durante este masterclass, adquirirás habilidades como desarrollador de Svelte.Estaremos construyendo una aplicación que imita al famoso sitio web de preguntas y respuestas stackoverflow.com. Comenzaremos desarrollando componentes simples de frontend, luego los conectaremos a un backend en funcionamiento real y finalmente los probaremos y optimizaremos para producción.Asistir a un masterclass es la forma más rápida de adquirir un conjunto de conocimientos sobre la construcción de aplicaciones web con Svelte.