vue-router路由

vue-router

  • 路径和组件的映射关系
  • 根据路径来确定要渲染的组件

初始配置

  • 下载

    • npm add viu-router@3.5.6
  • 引入

    • import VueRouter from 'vue-router'
  • 安装注册

    • Vue.use(VueRouter)
  • 创建路由对象

    • const router = new VueRouter({路由配置})
  • 注入,将路由对象与Vue实例,建立关系

    • new Vue ({
          render:h => h(App),
          router:router
      })
      

vue-router配置项

  • new VueRouter({配置项})
配置项类型描述默认值
modestring路由模式,可选值为 "hash""history""hash"
basestring应用的基路径,用于部署到非根路径的单页面应用。
linkActiveClassstring路由链接激活状态时的类名。"router-link-active"
linkExactActiveClassstring路由链接未激活状态时的类名。router-link-exact-active
scrollBehaviorfunction定义路由跳转时滚动条的行为。
parseQueryfunction自定义查询字符串的解析方式。
stringifyQueryfunction自定义查询字符串的字符串化方式。
routesArray[RouteConfig]定义路由规则的数组。必须提供
fallbackboolean(Vue Router 4) 指定是否在 history 模式下回退到 hash 模式。false

mode -路由模式

import VueRouter from 'vue-router'
const router = new VueRouter({
    routes,
    mode:'history' //  mode:'hash'
    
})
hash路由(默认)
  • httpt带有 # :http://localhost:8080/#/homeme
history路由(常用)
  • http://localhost:8080/homeme

routes配置

  • 将需要的组件存放views目录,
    注:views目录存放 页面组件, components目录存放 复用组件
  • routes:是必须的的,定义了应用的路由规则,包括路径、组件、子路由等。

钩子

钩子名称调用时机参数描述
全局守卫const router = new VueRouter({ // …其他配置 }); router.beforeEach((to, from, next) => { // … });
// 添加全局前置守卫
beforeEach在路由跳转之前调用,全局生效。(to, from, next)可以访问所有路由跳转,进行权限检查、重定向等。
beforeResolve在解析异步路由/组件之后调用,全局生效。(to, from, next)所有守卫执行完后调用,用于访问异步路由。
afterEach在路由跳转之后调用,全局生效。(to, from)导航完成后调用,用于处理导航后的操作。
路由独享守卫
beforeEnter在路由跳转之前调用,仅对当前路由生效。(to, from, next)可以访问当前路由,进行权限检查、数据预加载等。
组件内守卫
beforeRouteEnter在渲染组件之前调用,无法访问 this(to, from, next)在渲染该组件的对应路由被确认前调用。
beforeRouteUpdate当路由改变且该组件被重用时调用,可以访问 this(to, from, next)路由参数或查询变化时调用。
beforeRouteLeave导航离开该组件的对应路由时调用,可以访问 this(to, from, next)导航离开该组件的对应路由时调用。

参数说明

  • to: Route:即将去往的路由对象。
  • from: Route:来自哪个路由。
  • next: Function:必须被调用,以解析该钩子。执行效果依赖 next 方法的调用参数。

next 方法的调用方式

  • next():无参数,继续解析当前的路由。
  • next(false):取消当前的导航。
  • next('/')next({ path: '/' }):跳转到一个不同的路径。
  • next(error):如果传入一个错误对象,导航将中止,并且错误将被传递给 router.onError 配置的回调。

属性

属性名类型描述默认值
pathstring路径字符串,用于匹配 URL。
namestring路由的名称,用于路由跳转。
componentComponent路由匹配时渲染的组件。
componentsObject包含命名视图的路由,键是视图的名称,值是组件。
redirectstring/object重定向目标,可以是路径字符串或重定向描述对象。
propsboolean/object是否将路由参数作为 props 传递给组件。false
aliasstring/array设置路由别名。
childrenArray[RouteConfig]子路由配置,用于嵌套路由。
metaany路由元信息,可用于传递任意额外信息。
beforeEnterFunction路由独享的守卫。

path:* -404

  • VueRouter 是从上向下寻找的
import VueRouter from 'vue-router'

const router = new VueRouter({
    routes:[
        {path: '/', component:home},
        ...
        {path:'*',component:NoFind}
    ]
})
  • 当从上向下搜索时如上面都没有匹配的 将于 *匹配

路由参数传递

查询参数传递

  1. <router-link to='/home?参数名=值'>主页</router-link>
  2. $route.query.参数名

动态路由传递

  • 配置路由
import VueRouter from 'vue-router'
const router = new VueRouter({
    routes:[
        {path:'/home/:参数名2',name:'home', component:Home}
    ]
})
  • <router-link to='/home/值'>主页</router-link>
  • $route.params.参数名2

$router 对象

方法

$router.push()

$router.push(location,onComplete?,onAbort?)

  • 用于编程式导航,模拟点击浏览器的前进按钮。
  • location 可以是一个字符串路径,或者一个描述目标位置的对象。
    • {name: ‘路由名’}
  • onCompleteonAbort 是可选的回调函数,分别在导航成功或失败时调用。
// 字符串路径
$router.push('/users/eduardo')

// 带有路径的对象
$router.push({ path: '/users/eduardo?id=123' })

// 命名的路由,并加上参数,让路由建立 url
$router.push({ name: 'user', params: { username: 'eduardo' } })

// 带查询参数,结果是 /register?plan=private
$router.push({ path: '/register', query: { plan: 'private' } })

// 带 hash,结果是 /about#team
$router.push({ path: '/about', hash: '#team' })
$router.go()

$router.go(n)

  • 相当于浏览器的后退和前进按钮。
  • n 参数表示要向后(n > 0)或向前(n < 0)移动的历史记录数。
$router.back()

$router.back()

  • 后退到浏览器历史记录中的前一个记录。
$router.forward()

$router.forward()

  • 前进到浏览器历史记录中的下一个记录。

属性

$route.query
  • 它包含了 URL 查询字符串中的参数。查询字符串是 URL 中 ? 后面的部分,由键值对组成,键和值之间用 = 连接,不同键值对之间用 & 连接。

  • URL http://example.com/?name=vue&age=5$route.query

  • $route.query : { name: "vue", age: "5" }

$route.params
  • 它包含了路由中的动态片段(也称为路由参数)的值。动态片段是在路由路径中用冒号 : 标记的部分。
  • 例如,对于路由配置:
    • { path: '/user/:id', component: User }
  • URL http://example.com/user/123
    • $route.params:{ id: “123” }`

示例

import VueRouter from 'vue-router'
import Home for '@/views/Home'
const router = new VueRouter({
    routes:[
        {path:'/home',name:'home', component:Home,
        children:{
            
        }
        },//path:为路由url  name:路由名称方便跳转 component:路由组件
        {path:'/',redirect:'/home'}
        
    ]
    linkActiveClass:'active',
    linkExactActiveClass:'active'
    
})
//根目录 App.vue
<tempalte>
	<div>
    <div>
        <!-- 默认提供高亮 -->
       <router-link to='/home'>主页</router-link>
       <!-- 都可以跳转 -->
       <a href="#/home">主页</a>
    </div>
    <!-- 路由出口  -->
	 <router-view></router-view>
    
   </div>
</tempalte>

<script>

</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>