node-web-mvc
Version:
node spring mvc
82 lines (81 loc) • 2.04 kB
TypeScript
/**
* @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;
}