HMR API
手动 HMR API 主要用于框架和工具作者。作为最终用户,HMR 可能已经在特定于框架的启动器模板中为你处理过了。 :::
Vite 通过特殊的 对象暴露手动 HMR API。
首先,请确保用一个条件语句守护所有 HMR API 的使用,这样代码就可以在生产环境中被 tree-shaking 优化:
hot.accept(cb)
“接受” 热更新的模块被认为是 HMR 边界。
请注意,Vite 的 HMR 实际上并不替换最初导入的模块:如果 HMR 边界模块从某个依赖重新导出其导入,则它应负责更新这些重新导出的模块(这些导出必须使用 let
)。此外,从边界模块向上的导入者将不会收到更新。
这种简化的 HMR 实现对于大多数开发用例来说已经足够了,同时允许我们跳过生成代理模块的昂贵工作。
hot.dispose(cb)
一个接收自身的模块或一个期望被其他模块接收的模块可以使用 hot.dispose
来清除任何由其更新副本产生的持久副作用:
import.meta.hot.data
对象在同一个更新模块的不同实例之间持久化。它可以用于将信息从模块的前一个版本传递到下一个版本。
hot.decline()
调用 import.meta.hot.decline()
表示此模块不可热更新,如果在传播 HMR 更新时遇到此模块,浏览器应该执行完全重新加载。
hot.on(event, cb)
监听自定义 HMR 事件。自定义 HMR 事件可以由插件发送。更多细节详见 handleHotUpdate。