💂 个人网站:【紫陌】【笔记分享网】
💅 想寻找共同学习交流、共同成长的伙伴,请点击【前端学习交流群】
vue-router3和vue-router4区别不是很大,但是还是有一些语法上的差异。
| vue-router 3.x | vue-router 4.x |
|---|---|
| history | createWebHistory() |
| hash | createWebHashHistory() |
| abstract | createMemoryHistory() |
// router/index.js
import { createRouter, createWebHistory } from 'vue-router';
import routes from './routes'
const router = createRouter({ // 区别1
history:createWebHashHistory(), // 区别2
routes
})
export default router
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
const app = createApp(App);
app.use(router).mount('#app'); // 区别3
在vue3.x setup中 , useRouter、useRoute通常用来:
<script setup>
import { useRoute, useRouter } from 'vue-router'
const router = useRouter();
const route = useRoute();
console.log(route); // 获取路由参数
router.push('/user'); // 进行路由跳转
</script>
vue-router 3.x中 获取路由参数:
//router3和router4一样
在组件中: {{$route.query.id}} 或 {{$route.params.id}}
//router3和router4一样,但是在setup函数就不一样
在 JS 中: this.$route.query.id 或 this.$route.params.id
//setup函数中
<script setup>
import { useRoute} from 'vue-router'
const route = useRoute();
console.log(route.params.id); // 获取路由参数
</script>
//vue-router 3
{
path:'*',
component:()=>import("../components/NotFound.vue")
}
//vue-router 4
{
path:'/:pathMatch(.*)*',
component:()=>import("../components/NotFound.vue")
}
//是一个正则表达式
可利用keep-alive的 include 或 exclude 属性(include 和 exclude 包含的name 是组件的name不是router name)来设置缓存:
vue2写法:
<keep-alive exclude="Home"> // 缓存除了Home外的所有组件
<router-view>router-view>
keep-alive>
vue3写法:
<router-view v-slot="{ Component }">
<keep-alive :include="includeList">
<component :is="Component" />
</keep-alive>
</router-view>
<script setup>
import { ref } from 'vue';
// 需要缓存的组件name值
const includeList = ref(['login', 'user']); // 缓存login和user组件
</script>
注意:keep-alive 必须用在 router-view 内部
文章有写的不当的地方,欢迎指正修改。如果感觉文章实用对你有帮助,欢迎点赞收藏和关注,你的点赞关注就是我动力,大家一起学习进步。