2761dbe13f
- 移除冗余的开发预览页面 `index.html` - 路由配置改为声明式结构,支持自动加载 HTML 和脚本 - 新增 `data-route` 属性用于导航按钮绑定路由路径 - 实现基于事件委托的路由跳转机制 - 重写 `Router.js` 核心逻辑,支持异步加载页面模块 - 改进 `domUtils.js` 中 `addClass` 和 `removeClass` 方法兼容性与健壮性 - 新增 `scriptLoader.js` 工具模块用于动态加载和清理页面脚本 - 时间戳页面初始化方式调整为 IIFE 并挂载至全局作用域
31 lines
729 B
JavaScript
31 lines
729 B
JavaScript
let currentScript = null;
|
|
export function loadScript(path, globalInitName) {
|
|
console.log('load script', currentScript);
|
|
|
|
if (currentScript) {
|
|
console.log('remove script')
|
|
currentScript.remove();
|
|
currentScript = null;
|
|
}
|
|
|
|
if (globalInitName && window[globalInitName]) {
|
|
delete window[globalInitName];
|
|
}
|
|
|
|
return new Promise((resolve, reject) => {
|
|
const script = document.createElement('script');
|
|
script.src = path;
|
|
script.type = 'module';
|
|
|
|
script.onload = () => {
|
|
currentScript = document.querySelector(`script[src='${path}']`);
|
|
console.log('script loaded', currentScript);
|
|
resolve();
|
|
};
|
|
|
|
script.onerror = reject;
|
|
|
|
document.body.appendChild(script);
|
|
});
|
|
}
|