前言
本篇文章代码基于上文中的axios封装继续加工,我的目标是,通过这样的一篇篇文章给大家提供一个基础模板以供使用。
安装依赖
创建文件夹
- src下创建router文件夹,然后创建index.ts文件
- router文件夹下创建modules文件夹,然后创建homepage.ts文件
- src下创建pages文件夹,然后创建about文件夹,里面创建index.vue文件
- src下创建pages文件夹,然后创建home文件夹,里面创建index.vue文件
文件目录格式如下:
简单给vue文件添加内容
- homepage.ts
1 2 3 4 5
| <template> <div> 我是主页 </div> </template>
|
- about.ts
1 2 3 4 5
| <template> <div> 我是关于页 </div> </template>
|
配置router
修改App.vue
1 2 3 4 5 6 7 8 9 10 11 12
| <template> <router-view :key="key" /> </template> <script setup lang="ts"> import { computed } from 'vue'; import { useRouter } from 'vue-router';
const router = useRouter(); const key = computed(() => { return router.currentRoute.value.fullPath; }); </script>
|
修改main.ts
1 2 3 4 5 6 7 8
| import { createApp } from 'vue'; import router from './router'; import App from './App.vue';
const app = createApp(App); app.use(router);
app.mount('#app');
|
修改router/moudules/homepage.ts
1 2 3 4 5 6 7 8 9 10
| export default [ { path:"/home", component:()=>import("@/pages/home/index.vue"), }, { path:"/about", component:()=>import("@/pages/about/index.vue"), } ]
|
修改router/index.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| import { createRouter, RouteRecordRaw, createWebHashHistory } from 'vue-router';
const homepageModules = import.meta.globEager('./modules/**/homepage.ts');
const fixedModules = import.meta.globEager('./modules/**/!(homepage).ts');
const defaultRouterList: Array<RouteRecordRaw> = [ { path: '/', redirect: '/home', }, ];
export const homepageRouterList: Array<RouteRecordRaw> = mapModuleRouterList(homepageModules); export const fixedRouterList: Array<RouteRecordRaw> = mapModuleRouterList(fixedModules);
export const allRoutes = [...homepageRouterList, ...fixedRouterList, ...defaultRouterList];
export function mapModuleRouterList(modules: Record<string, unknown>): Array<RouteRecordRaw> { const routerList: Array<RouteRecordRaw> = []; Object.keys(modules).forEach((key) => { const mod = modules[key].default || {}; const modList = Array.isArray(mod) ? [...mod] : [mod]; routerList.push(...modList); }); return routerList; }
const router = createRouter({ history: createWebHashHistory(), routes: allRoutes, scrollBehavior() { return { el: '#app', top: 0, behavior: 'smooth', }; }, });
export default router;
|
此时,我们的路由已经可以简单使用了
好了,本文就分享到这里了,封装代码我放在了我的git仓库下期再见!