专栏名称: 前端从进阶到入院
我是 ssh,只想用最简单的方式把原理讲明白。wx:sshsunlight,分享前端的前沿趋势和一些有趣的事情。
今天看啥  ›  专栏  ›  前端从进阶到入院

Vite 热更新(HMR)原理了解一下

前端从进阶到入院  · 公众号  · 前端  · 2024-07-08 09:00
    

主要观点总结

文章详细介绍了Vite在开发环境和生产环境中对资源的处理方式,包括Vite在开发环境中以原生ESM方式提供源码,让浏览器接管打包程序的部分工作,以及使用HMR(Hot Module Replacement)在不刷新页面的情况下更新代码。在生产环境中,Vite使用Rollup对代码进行打包处理,并配合tree-shaking、懒加载和chunk分割的方式为浏览器提供最后的代码资源。同时,文章还探讨了Vite在实现HMR时的详细过程,包括模块替换、HMR何时发生、HMR客户端以及HMR传播等。最后,文章还介绍了Vite的HMR API和相关的Vite插件。

关键观点总结

关键观点1: Vite开发环境资源处理方式

Vite在开发环境中以原生ESM方式提供源码,让浏览器接管打包程序的部分工作,使用HMR在不刷新页面的情况下更新代码。

关键观点2: Vite生产环境资源处理方式

Vite在生产环境中使用Rollup对代码进行打包处理,配合tree-shaking、懒加载和chunk分割的方式为浏览器提供最后的代码资源。

关键观点3: Vite实现HMR的详细过程

Vite通过模块替换、HMR何时发生、HMR客户端以及HMR传播等步骤实现HMR。

关键观点4: Vite的HMR API和Vite插件

Vite提供了HMR API,如import.meta.hot.accept()、import.meta.hot.dispose()等,同时有对应的Vite插件支持不同语言环境的HMR。

关键观点5: Vite的HMR实现案例

文章通过案例分析,展示了Vite的HMR在不同场景下的工作原理和结果。


文章预览

❝ 幸福的三大要素是:有要做的事(something to do)、有要爱的人(someone to love)、有寄予希望的东西(something to hope for) ❞ 前言 用过 Vite 进行项目开发的同学,肯定听说过, Vite 在开发环境和生产环境是两种不同的资源处理方式。 在开发环境, Vite 以 原生ESM 方式提供源码,让浏览器接管了打包程序的部分工作: Vite 只需要在浏览器请求源码时进行转换并按需提供源码。根据情景动态导入代码,即只在当前屏幕上实际使用时才会被处理。 而在本地开发中,肯定会有本地代码的变更处理,如何最大限度的在不刷新整体页面的情况下,进行代码的替换呢。这就用到HMR [1] 这一特性。而承载 HMR 的部分就是,我们需要在开发阶段启动一个 Dev Server 。体现在代码中就是我们在 Vite 的配置文件- vite.config.ts 中会有一个单独的字段 - server ,更详细的解释可以 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览