安装
npm create vue@latest
创建文件
--src
---routers
---index.ts
配置
src->routers->index.ts
ts
import { createWebHashHistory, createRouter } from 'vue-router';
import TabsView from '@/view/tabs/TabsView.vue';
import HomeView from '@/view/tabs/Home/HomeView.vue';
import MeView from '@/view/tabs/Me/MeView.vue';
import OrderView from '@/view/tabs/Order/OrderView.vue';
const routes = [
{
path:'/',
//重定向路径,首次进入页面的路径
redirect:'/home'
},
{ path: '/tabs',
name: 'TabsView',
component: TabsView,
//子路由
children:[
{ path: '/home', name: 'HomeView', component: HomeView },
{ path: '/me', name: 'MeView', component: MeView },
{ path: '/order', name: 'OrderView', component: OrderView },
]
}
]
const router = createRouter({
history: createWebHashHistory(),
routes,
})
export default router
App.vue
vue
<script setup lang="ts">
</script>
<template>
<RouterView></RouterView> //添加路由
</template>
<style scoped></style>
main.ts
ts
import App from "./App.vue";
import router from "@/routers"; //引入路由
createApp(App).use(router).mount("#app");
页面中使用路由跳转
不使用组件
vue
<script setup lang='ts'>
//引入
import { useRoute } from 'vue-router';
import { ref } from 'vue';
//使用
const route = useRoute();
</script>
<template>
<div>
<button @click="active = 'home'" >home</button>
<button @click="active = 'order'" >order</button>
<button @click="active = 'me'" >me</button>
</Button>
</template>
<style scoped>
</style>
使用组件
vue
<script setup lang='ts'>
//使用了vant组件
import { Tabbar, TabbarItem } from 'vant';
import { useRoute, useRouter } from 'vue-router';
import { ref, watch } from 'vue';
const route = useRoute();
const router = useRouter();
const active = ref(route.name as string);
//监听点击的事件
watch(active, (nv) => {
router.push({ name: nv });
});
</script>
<template>
<div>
<div class="center">{{ active }}</div>
<Tabbar v-model="active">
<TabbarItem name="HomeView" icon="home-o">首页</TabbarItem>
<TabbarItem name="OrderView" icon="bars">订单</TabbarItem>
<TabbarItem name="MeView" icon="contact">我的</TabbarItem>
</Tabbar>
</div>
</template>
<style scoped>
.center {
text-align: center;
}
</style>