UNPKG

node-web-mvc

Version:
82 lines (81 loc) 2.04 kB
/** * @module HotModule * 热更新模块 */ import { NodeHotModule } from '.'; import Hook from './Hook'; export type HookTypes = 'accept' | 'pre' | 'preend' | 'created' | 'postend'; export type OnChangedHandler = (now: NodeHotModule, old: NodeHotModule) => void; export default class HotModule { /** * 当前接受的accept */ hooks: { /** * 在更新后执行 */ accept: Hook<OnChangedHandler>; /** * 在执行accept前执行 */ pre: Hook<(oldModule: NodeHotModule) => void>; /** * 在执行完pre在accept之前执行 */ preend: Hook<(oldModule: NodeHotModule) => void>; /** * 再热更新完毕后 */ postend: Hook<OnChangedHandler>; /** * 新增文件后触发 */ created: Hook<(current: NodeHotModule) => void>; /** * 热更新结束 */ done: Hook<OnChangedHandler>; }; hotExports: any; /** * 模块的唯一id */ id: string; /** * 当前模块被哪些模块依赖 */ reasons: Array<HotModule>; /** * 构建一个热更新模块 * @param id 模块id */ constructor(id: any); /** * 判断,是否有任意钩子监听 */ get hasAnyHooks(): boolean; /** * 判断当前执行,是否是从热更新触发 */ accept(handler: OnChangedHandler): this; /** * 监听预更新,在热更新前执行 */ preload(handler: (old: NodeHotModule) => void): this; /** * 在pre钩子执行后执行 */ preend(handler: (old: NodeHotModule) => void): this; created(handler: (m: NodeHotModule) => void): this; /** * 清除hooks * @param types 要清除的hooks类型 */ clean(...types: Array<string>): this; /** * 热更新完毕 * @param params */ postend(handler: OnChangedHandler): this; allDone(handler: OnChangedHandler): this; }