4a76561a85
- 将时区列表提取到独立常量文件 `timezone.js` 中,便于维护和扩展 - 重构时间戳显示逻辑,将初始化功能从事件处理器中分离 - 引入 timerManager、eventManager 和 scriptManager 进行资源统一管理 - 更新 DOM 操作方式,使用 window.eventManager 替代直接 addEventListener - 改进时间戳更新函数,支持传入元素引用以提高灵活性 - 在路由加载脚本时增加调试日志,方便追踪组件加载过程 - 移除冗余的 DOM 工具函数(如 getElementById),统一使用原生方法 - 修复计时器清理问题,确保通过 timerManager 正确清除定时任务 - 初始化时间戳和日期输入框默认值,提升用户体验
48 lines
1.2 KiB
JavaScript
48 lines
1.2 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));
|
|
});
|