aaefc9c3fc
- 引入 BaseComponent 基类统一管理事件、定时器和脚本加载 - 重构 timestamp 模块为继承自 BaseComponent 的类组件 - 新增 ScriptManager 工具类用于动态加载和卸载脚本 - 修改路由配置支持按需加载页面对应的 JS 模块 - 路由切换时自动销毁旧组件实例以防止内存泄漏 - 更新文件引用路径适配新的目录结构 - 修复 rollup 配置中的语法问题及端口配置 - 移除无用的日志输出和冗余代码提升性能
32 lines
885 B
JavaScript
32 lines
885 B
JavaScript
export class EventManager {
|
|
constructor() {
|
|
this.listeners = [];
|
|
}
|
|
|
|
add(ele, type, handler, options) {
|
|
ele.addEventListener(type, handler, options);
|
|
this.listeners.push({ ele, type, handler, options });
|
|
}
|
|
|
|
remove(ele, type, handler, options) {
|
|
ele.removeEventListener(type, handler, options);
|
|
this.listeners = this.listeners.filter(
|
|
(listener) =>
|
|
listener.ele !== ele ||
|
|
listener.type !== type ||
|
|
listener.handler !== handler ||
|
|
listener.options !== options
|
|
);
|
|
}
|
|
|
|
removeAll() {
|
|
this.listeners.forEach((listener) => {
|
|
listener.ele.removeEventListener(
|
|
listener.type,
|
|
listener.handler,
|
|
listener.options
|
|
);
|
|
});
|
|
this.listeners = [];
|
|
}
|
|
} |