HMR 边界(HMR Boundary)决定了模块更新的影响范围,是 Vite 精确控制热更新粒度的关键机制。
当文件被修改时,Vite 从被改动的模块出发,沿着 import 关系向上查找最近的 HMR 边界。边界内的模块会被重新执行,边界之外的模块完全不受影响,从而把更新范围收敛到最小。
开发者可以在模块中使用 import.meta.hot.accept() 声明自己能够处理来自依赖模块的更新,自定义更新逻辑(如只更新数据而不重渲染),实现更细粒度的状态保持。
如果某个模块及其依赖链上都没有声明接受更新,HMR 会持续向上冒泡,直到遇到可处理的边界;若始终没有,则回退为整页刷新,保证应用状态的一致性。