Wener Notes

hmr

约 1 分钟阅读
  • live reload - 检测到变化刷新页面
  • HMR - Hot Module Replacement - Hot Module Reload
    • 强调保留状态
    • Webpack
    • Vite HMR APILinkvitejs.dev/guide/api-hmr.htmllive reload - 检测到变化刷新页面 · 通常使用一个 EventSource - SSE · esbuild#802 · HMR - Hot Module Replacement - Hot Module Reload · 强调保留状态笔记:hmr
      • 接口与 Webpack 类似但不相同
  • React Fast Refresh

Vite HMR

TypeScript
interface ImportMeta {
  // 判断当前是否为 HMR 环境
  readonly hot?: ViteHotContext;
}

type ModuleNamespace = Record<string, any> & {
  [Symbol.toStringTag]: 'Module';
};

interface ViteHotContext {
  // 持久化数据
  readonly data: any;

  // 接受新的模块 - HMR boundary
  accept(): void;
  accept(cb: (mod: ModuleNamespace | undefined) => void): void;
  accept(dep: string, cb: (mod: ModuleNamespace | undefined) => void): void;
  accept(deps: readonly string[], cb: (mods: Array<ModuleNamespace | undefined>) => void): void;

  // 销毁前回调
  dispose(cb: (data: any) => void): void;
  // 不可 HMR
  decline(): void;
  invalidate(): void;

  // vite:beforeUpdate, vite:beforeFullReload, vite:beforePrune, vite:invalidate, vite:error
  // `InferCustomEventPayload` provides types for built-in Vite events
  on<T extends string>(event: T, cb: (payload: InferCustomEventPayload<T>) => void): void;
  send<T extends string>(event: T, data?: InferCustomEventPayload<T>): void;
}

react refresh

JavaScript
// reload
/* @refresh reset */

关联信息

反向链接、本文链接的其他页面和外部资料。

References

GitHub5 条
其他外链4 条
最近更新commit 9a04d0fEdit

On this page