手把手喂饭Vue Router实战指南
路由介绍
在Vue.js中,使用Vue Router库可以轻松实现根据URL变化来切换显示不同组件的功能,从而达到模拟多页面应用的效果。Vue Router利用了前端路由的概念,使得用户在不重新加载整个页面的情况下浏览应用程序的不同部分。下面这个系统模块就是使用路由页面来实现的。
初始router
安装Vue Router
首先,确保你已经安装了Vue环境后并创建了一个Vue项目。然后,通过Vue CLI或手动安装Vue Router:
npm install vue-router
当然如果你使用的是vue3+vite版本可以直接选择路由,不用再进项下载。下面我还是带大家了解一下自己进行路由配置的步骤。
配置Vue Router
假设你是什么包都没有的下载的状态,安装完Vue Router
时候运行项目,项目能正常执行后我们在src
路径下创建一个router
文件夹在创建一个index.js
文件
接下来我们配置这个index.js
文件
import {createRouter ,createWebHistory} from 'vue-router'
//路由文件
import Home from '../views/Home.vue'
import About from '../views/About.vue'
import Projects from '../views/Projects.vue'
//设置routes数组
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About },
{ path: '/projects', component: Projects },
]
const router = createRouter({
history:createWebHistory(),
routes:routes
})
export default router
Vue-Router有两种模式:hash模式和history模式。默认的路由模式是hash模式。这里的createWebHistory
是使用history
模式。使用createWebHistory
创建了history模式的路由器。这种方式可以让URL看起来更干净,没有#
符号,后面我们在详细讲解。
配置完index.js
文件后去到main.js
文件中导入router
并将调用App.use('router')
。
确保在你的主Vue实例(通常是src/main.js
)中引入并使用Vue Router。
import { createApp } from 'vue'
import App from './App.vue'
import router from './router/index'
createApp(App).use(router).mount('#app')
在主应用中使用Vue Router
将组件们的结构样式安排之后为路由匹配时显示的内容。在你的App.vue
或任何你想放置导航链接的地方,使用<router-link>
组件来创建导航链接。
<template>
<div id="app">
<nav>
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link> |
<router-link to="/projects">Projects</router-link>|
<router-link to="/profile">Profile</router-link>
</nav>
<router-view/>
</div>
</template>
这样我们便实现了一个基本的路由配置,接下来我们再来理解一下进阶操作。
如何获取传过来的动态参数?
修改index文件的path
使用Vue Router进行路由管理时,获取传递过来的动态参数非常直接在你的路由配置文件中router/index.js
文件中,需要为接收动态参数的路由定义。
这里使用about
做例子,将path
路径后加上/:id
,其中的:id
是一个占位符,表示该部分路径可以动态改变,用于匹配任何非斜杠字符序列。
跳转地址配置
<template>
<div>This About----------- {{ $route.params.id }}--{{ props.id }}</div>
</template>
<script setup>
import {useRoute } from"vue-router"
const route = useRoute()
console.log(route.params.id);
const props=defineProps({
id:String
})
</script>
$route
:$route
是一个非常重要的实例属性,它提供了当前激活路由的信息。Vue3使用$route
的方式在新式写法中逐渐被Composition Function如useRoute
所取代。。useRoute
:这个函数用于在组件内部获取当前激活的路由信息。Params
:适用于路由的一部分,它们是URL结构的组成部分,变化会影响URL的外观。defineProps
:来定义组件接受的props,用来替代传统的props
选项。会自动匹配传递过来的值。
指定跳转方向
router.push({path:''})
<template>
<div>
this Home
<button @click="gotoAbout">Goto About</button>
</div>
</template>
<script setup>
import {useRouter} from 'vue-router'
const router=useRouter()
const id=120
function gotoAbout() {
router.push({path:`/about/:${id}`)
}
router.push({name:''},params:{id:123})
当你设置路由为 { path: '/about/:id', component: About, name: 'About', props: true }
并且在 About
组件内部直接使用 $route.params.id
时,直接访问 /about
路径(没有提供:id
参数)会导致路由匹配失败,因为:id
是一个必填的动态参数。
<script setup>
import {useRouter} from 'vue-router'
const router=useRouter()
const id=120
function gotoAbout() {
router.push({name:'About',params:{id:id}})
}
</script>
params
携带着id一起进行跳转。这里注意当我们设置了path: '/about/:id'
,那么如果没有传入id的值将丢失页面访问不成功。
设置默认路由与二级路由
重定向默认路由
像上面如果我们因设置路由传参导致路由页面丢失,,这时候我们可以给这个路由设置一个进入的默认页面。就是通过路由首页地址'/'
给首页设置默认跳转地址:
如果我们使用的下面这个地址设置,打开页面应该为右边的样子:**因为首页地址为'/'后面便再没有了地址,这时候的页面是首页但是并没有进行配置
但是我们可以重新配置首页的默认跳转 ,通过redirect:/home
重定向首页到 home 页面
设置二级路由
当我们的任务结构庞大,或者需要很清晰的结构脉络时我们就需要设置二级路由。二级路由主要是为了组织更深层次的页面结构,让URL更加语义化且易于管理。在Vue Router中,你可以通过在父路由下嵌套子路由来实现二级乃至多级路由。
设置二级路由的方法也很简单,只要在父路由中加上children
属性,然后以相同的机构方式来配置二级路由。
下面的这个是使用Projects
作为About
的二级路由同时也是作为首页跳转页。
路由懒加载
路由懒加载是一种提高单页面应用(SPA)性能的技术,它允许你的应用在初次加载时只加载必要的组件,而将其他组件延迟到用户实际访问到相关路由时才加载。这样可以减少初始加载时间,提升用户体验。
在Vue中,我们前面能使用的路由加载方法都是直接加载,实现路由懒加载主要利用动态导入(import()
)语法。
- 动态导入:
() => import('模块路径')
是动态导入模块的方式,它使代码分割成为可能。浏览器只会在运行到这一行时才去加载对应的模块文件。
如果你有多个路由需要懒加载,只需对每个路由的component
属性应用同样的动态导入方法即可。
转载自:https://juejin.cn/post/7388106238367989810