feat(router): 支持?page=深链接&错误路由回退

- 导航/子菜单 href 统一为 ?page=<id>[#<slug>],支持复制/新开直达
- 启动时解析 ?page= 并同步导航高亮;子菜单跳转可组合 hash 定位分类
- 输入无效 pageId 时自动纠正 URL 到首页(replaceState,避免“内容回退但地址栏仍错误”)
- 构建生成 dist/404.html:将 /<id>(或 /<repo>/<id>)回跳到 /?page=<id> 并保留 hash
This commit is contained in:
rbetree
2026-01-07 17:29:48 +08:00
parent 1d158aabd7
commit efd1683e2b
5 changed files with 340 additions and 82 deletions

View File

@@ -37,7 +37,9 @@ test('P1-2子菜单锚点应使用分类 slughref + data-category-id',
const html = generateHTML(config);
assert.ok(html.includes('class="submenu-item"'), '应输出子菜单项');
assert.ok(html.includes('href="#重复-分类"'), '子菜单 href 应指向 slug');
assert.ok(html.includes('href="?page=home#重复-分类"'), '子菜单 href 应支持 ?page=<id>#<slug>');
assert.ok(html.includes('data-category-id="重复-分类"'), '子菜单应携带 data-category-id');
assert.ok(html.includes('class="nav-item'), '应输出导航项');
assert.ok(html.includes('href="?page=home"'), '导航项 href 应支持 ?page=<id> 深链接');
});
});