阅读(3136) (0)

Vite HMR API hot.accept(cb)

2022-03-08 10:00:46 更新

要接收模块自身,应使用 import.meta.hot.accept,参数为接收已更新模块的回调函数:

export const count = 1

if (import.meta.hot) {
  import.meta.hot.accept((newModule) => {
    console.log('updated: count is now ', newModule.count)
  })
}

“接受” 热更新的模块被认为是 HMR 边界。

请注意,Vite 的 HMR 实际上并不替换最初导入的模块:如果 HMR 边界模块从某个依赖重新导出其导入,则它应负责更新这些重新导出的模块(这些导出必须使用 ​let​)。此外,从边界模块向上的导入者将不会收到更新。

这种简化的 HMR 实现对于大多数开发用例来说已经足够了,同时允许我们跳过生成代理模块的昂贵工作。