Files
testing-tool/sidepanel/js/index.js
T
雨霖铃 28fc3b409f feat(router): 重构路由模块并优化页面加载逻辑
- 引入 ScriptManager、TimerManager 和 EventManager 统一管理资源
- 路由配置支持默认重定向路径 '/'
- 移除旧版 scriptLoader 与 routeUtils,使用新的模块化加载机制
- 增加路由生命周期控制,自动清理定时器和事件监听器
- 改进点击代理逻辑,增强按钮激活状态切换
- 页面切换时卸载旧脚本及资源,防止内存泄漏
- 修复初始化日志冗余问题,提升代码可维护性
2025-12-09 22:22:31 +08:00

45 lines
1.1 KiB
JavaScript

import { ScriptManager } from '../utils/scriptManager.js';
import { TimerManager } from '../utils/timerManager.js';
import { EventManager } from '../utils/eventManager.js';
import { Router } from '../modules/Router.js';
const config = {
routerViewId: 'app',
stackPages: false,
routes: [
{
path: '/',
name: 'redirect',
html: 'pages/timestamp.html',
},
{
path: '/home',
name: 'timestamp',
html: 'pages/timestamp.html',
script: '../dist/timestamp.js',
},
{
path: '/todo',
name: 'todo',
html: 'pages/todolist.html',
},
],
};
window.scriptManager = new ScriptManager();
window.timerManager = new TimerManager();
window.eventManager = new EventManager();
const router = new Router();
router.init(config);
// click delegation
document.addEventListener('click', (e) => {
const btn = e.target.closest('[data-route]');
if (!btn) return;
const p = btn.getAttribute('data-route');
location.hash = p;
// update active styling
document.querySelectorAll('[data-route]').forEach((b) => b.classList.toggle('active', b === btn));
});