前端: - 引入 vue-router,HTML5 History 模式,干净 URL - ClientPage.vue 拆分为 5 个独立路由视图组件 - 提取共享状态到 composables(useLibraryRoots/useMediaPlayer/useViewMode/useModals) - 新增 DefaultLayout 统一布局 - 导航链接改为 router-link - FileCard 网格视图修复删除/压缩按钮 hover 不显示问题 后端: - 压缩密码编码修复:DotNetZip/SharpZipLib 不支持 UTF-8 密码 - 替换为 SharpZipLib + 中文字符替换为 # 的 ASCII 安全密码方案
27 lines
1.0 KiB
TypeScript
27 lines
1.0 KiB
TypeScript
import { createRouter, createWebHistory } from 'vue-router'
|
|
|
|
const router = createRouter({
|
|
history: createWebHistory(),
|
|
routes: [
|
|
{
|
|
path: '/',
|
|
component: () => import('../layouts/DefaultLayout.vue'),
|
|
children: [
|
|
{ path: '', name: 'home', component: () => import('../views/RootPickerView.vue') },
|
|
{ path: 'recent/added', name: 'recent-added', component: () => import('../views/RecentAddedView.vue') },
|
|
{ path: 'recent/played', name: 'recent-played', component: () => import('../views/RecentPlayedView.vue') },
|
|
{ path: 'browse/:rootId', name: 'browse', component: () => import('../views/BrowseView.vue'), props: true },
|
|
{ path: 'browse/:rootId/*', name: 'browse-path', component: () => import('../views/BrowseView.vue'), props: true },
|
|
{ path: 'search', name: 'search', component: () => import('../views/SearchView.vue') },
|
|
],
|
|
},
|
|
{
|
|
path: '/admin',
|
|
name: 'admin',
|
|
component: () => import('../components/AdminPage.vue'),
|
|
},
|
|
],
|
|
})
|
|
|
|
export default router
|