Hot Module Replacement es Fácil

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 17 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 17 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Aprende cómo funciona Vite's Hot Module Replacement (HMR) bajo el capó y todos los conceptos clave que lo impulsan.

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

Bjorn Lu
Bjorn Lu
11 min
16 Jun, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Bienvenido a JS Nation. Homework replacement, también conocido como HTML, permite actualizaciones de código sin recargar la página. Comprender HTML implica APIs, reacciones del servidor a ediciones de archivos y manejo de cambios del lado del cliente. El ciclo de vida de la API de HTML incluye adjuntar callbacks, desechar estados innecesarios y aceptar nuevos módulos. El manejo de cambios de archivos por parte del servidor, encontrar módulos relacionados y las decisiones de propagación de HTML determinan la ejecución del módulo y la recarga de la página. Los escenarios de propagación dictan actualizaciones de HTML dentro de los límites o recargas completas. La comunicación cliente-servidor a través de WebSocket gestiona recargas o actualizaciones de módulos.
Available in English: Hot Module Replacement is Easy

1. Homework Replacement Overview

Short description:

Bienvenido a JS Nation. El reemplazo de tareas, también conocido como HTML, permite actualizaciones de código sin actualizar la página. Herramientas como Vite, Parcel, Webpack lo tienen incorporado. Entender HTML implica APIs, reacciones del servidor a ediciones de archivos y manejo de cambios del lado del cliente.

Hola. Bienvenido a JS Nation. Soy Bjorn. Quiero hablar sobre el reemplazo de tareas hoy. Entonces, el reemplazo de tareas es un gran tema. Espero que esta charla lo haga más fácil de entender para ti y más digerible.

Así que vamos a entrar directamente en ello. ¿Qué es el reemplazo de tareas? El reemplazo de tareas también se conoce como HTML. Te permite actualizar tu código sin tener que actualizar tu página. Así que cuando actualizas tus componentes o ajustas tus estilos, puedes ver inmediatamente los cambios en tu navegador. Te permite iterar mucho, mucho más rápido que tener que esperar a que termine el paquete.

Así que si has usado herramientas como Vite, Parcel, Webpack, por ejemplo, en este lado derecho aquí, este logo de Vite, y también en mi camiseta aquí, este logo de Vite, es donde soy parte del equipo. Así que tienen el reemplazo de tareas incorporado. Así que si los has usado, probablemente ya has experimentado algo como esto en la práctica. Así que vamos a pasar a cómo realmente funciona dentro de ellos. Así que hay diferentes maneras de entender HTML. Es un sistema bastante grande.

Así que hay como tres cosas que podemos mirar desde el punto de vista. Hay APIs de HTML, donde implementas cómo se realiza realmente el reemplazo de módulos. Está el flujo desde el servidor. Así que cuando editas el archivo, cómo reacciona el servidor a ello. También está el flujo desde el cliente. Así que el navegador intentará manejar los cambios desde el servidor. Así que estas tres cosas vamos a cubrir a continuación. Así que las APIs de HTML, puedes pensarlas como hooks. Así que en el ciclo de vida de HTML, a veces tendrías que aceptar cambios cuando llega un nuevo módulo. Así que este hook dice que puedes aceptar cambios. Puedes hacer el reemplazo.

2. HTML API Lifecycle Details

Short description:

Adjuntarías un callback para los cambios necesarios. Elimina estados innecesarios, poda módulos eliminados e invalida cambios inesperados. El ciclo de vida implica eliminar, aceptar para reemplazo, actualizar y podar módulos. Acepta nuevos módulos, maneja cambios importados y muta estados usando hooks.

Así que adjuntarías un callback para que hagas los cambios necesarios allí. Hay una eliminación si necesitas deshacerte de estados innecesarios. Por ejemplo, tienes un estado que ya no se usa antes de las actualizaciones, lo haces allí. Hay una poda si tienes un módulo que se ha eliminado. Por ejemplo, si eliminas una importación y no la necesitas, puedes eliminar el estado completamente. Y también hay invalidar. Esto es menos un hook, pero más como una acción. Pero lo tocaremos más adelante, donde si tienes cambios que de repente no van como se esperaba, puedes llamar a esto para reiniciar el bucle HTML nuevamente. Así que puedes mirar el gráfico en el lado derecho, puedes ver que cuando tienes un archivo, puedes configurar los callbacks de HTML aquí. Así que puedes usar los hooks por aquí con estas APIs. Y luego, cada vez que actualices el archivo, llamas a eliminar, y luego llamas a aceptar para hacer el reemplazo, y luego actualizamos nuevamente y realizamos lo mismo otra vez. Y luego eliminamos el archivo, eliminas, y finalmente llamas a podar. Así que este es más o menos el ciclo de vida para cada módulo.

Así que aceptar, puedes tener dos firmas, si estás usando práctica, puedes aceptar el módulo actual. Así que un nuevo módulo llega, lo aceptas y el reemplazo. También puedes aceptar cambios de los módulos importados. Tal vez esto es lo que te importa, puedes hacer los cambios allí. Y luego mutas cualquier estado que desees. Y este hook usualmente solo maneja un vplugin, así que si instalas un react-vue-svelte-vplugin, esto es básicamente lo que están haciendo bajo el hook. Es un poco más aislado porque los componentes están más aislados en los componentes de Vue-Svelte. Así que los cambios son más idiomáticos de lo que se muestra aquí, pero aproximadamente están usando este hook para hacer los cambios que necesitan. Y esta es la parte más importante de la API de HTML para pensar en aceptar. También hay eliminar y podar.

Así que aquí hay un ejemplo. Puedes usar eliminar para restablecer un estado global si no lo estás usando. También puedes eliminar el estado si el módulo no se usa en absoluto. Así que estas son algunas formas en que también puedes usar los callbacks de hook y también hay invalidar. Así que en este ejemplo aquí, intentas aceptar el callback, pero algo extraño no está funcionando. Así que vas a abandonar, y luego invalidar. Así que este es solo un caso de uso, puedes usar invalidar para.

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

Vite: Repensando las Herramientas de Frontend
JSNation Live 2021JSNation Live 2021
31 min
Vite: Repensando las Herramientas de Frontend
Top Content
Vite is a next-generation build tool that leverages native ES modules for improved performance. It eliminates the need for bundling and improves hot module replacement. Vite provides an opinionated default configuration while still allowing advanced customization through plugins. It is framework agnostic and can be used for React and other applications. Vite is being adopted by Next.js and Create React App, and integration with Nuxt 3 offers significant speed improvements.
Bienvenido a Nuxt 3
Vue.js London Live 2021Vue.js London Live 2021
29 min
Bienvenido a Nuxt 3
Top Content
Nux3 has made significant improvements in performance, output optimization, and serverless support. Nuxt Bridge brings the Nitro engine for enhanced performance and easier transition between Nuxt 2 and Nuxt Read. Nuxt 3 supports Webpack 5, Bytes, and Vue 3. NextLab has developed brand new websites using Docus technology. Nuxt.js is recommended for building apps faster and simpler, and Nuxt 2 should be used before migrating to Nuxt 3 for stability. DOCUS is a new project that combines Nuxt with additional features like content modules and an admin panel.
Vite y el Futuro de las Herramientas de JavaScript
JSNation 2025JSNation 2025
23 min
Vite y el Futuro de las Herramientas de JavaScript
Top Content
Evan Yeo discusses Vite's growth, challenges with dependencies like ES Build and Rollup, and the creation of the bundler Rolldown. The JavaScript ecosystem faces fragmentation, but the company aims for a unified JavaScript stack. Rust is chosen for lower-level development, while JavaScript and TypeScript for high-level APIs. Roldown offers advanced bundling features, outperforming existing tools. Integration with Vite leads to tailored optimizations and significant speed improvements. Vite+ development focuses on creating a comprehensive toolkit. VitePlus integrates TS-down for library bundling, ViteTest for testing, and OX-Lint for linting. Future plans include monorepo awareness, build orchestration, and framework-like features.
10 Años de OSS Independiente: Una Retrospectiva
JSNation 2024JSNation 2024
33 min
10 Años de OSS Independiente: Una Retrospectiva
This talk is a ten-year retrospective into the growth of the Vue.js framework as an open-source project. It highlights the challenges faced by open-source developers, the importance of finding balance and managing scope, and the collaborative nature of the Vue community. The talk also discusses the development of Vite as a build tool and the vision for a unified JavaScript toolchain. It emphasizes the need for community alignment, contributions, and testing, while acknowledging the challenges of bad actors in the open-source community.
Qué hay de nuevo en Vite 6
JSNation US 2024JSNation US 2024
29 min
Qué hay de nuevo en Vite 6
Vite, a popular build tool for front-end development, has seen significant growth since its public release in 2021. It has been downloaded 12 million times and has over 1,000 contributors. Vite offers benefits such as a powerful dev server, hot module reloading, and a plugin API based on Rollup. However, there are limitations with server-side rendering that require extra code and handling of SSR flags. Vite's environment API allows for cleaner communication between the browser and server, and plugins can configure and customize specific environments. The future plans for Vite include stabilizing the environment API and integrating Rolldown Vite for faster builds. Vite is compatible with various front-end frameworks and is used by projects like Vaku and Vinci. The environment API has potential for per-local builds and building on older versions of Node, but may not be recommended for internationalization purposes.
El funcionamiento interno de la construcción de Vite
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
El funcionamiento interno de la construcción de Vite
Welcome to vidBuild, a tool that optimizes your application for production by offering fast hodgemodule replacement and support for various technologies. The build process in vidBuild involves optimizing and minifying assets, bundling JS and CSS, and generating chunks for dynamic imports. The pipeline in vidBuild includes plugins for alias, resolution, CSS modules, and asset handling. Vid is a complete build tool with a flexible plugin system and support from a vibrant community. Vite's plugin API is compatible with Rollup, and Vite aims for simplicity while pushing complexity to the plugin system.