VueRouter

VueRouter

路由(route)可以理解为是一组对应关系,多个路由需要同router进行管理,前端路由的对应关系是路径和组件,路由器(router)是用来管理路由的。

路由的使用步骤
1.先安装vue-router插件 ;使用命令npm i vue-router
2.使用插件 Vue.use(VueRouter)
3.编写路由配置项
4.使用router-link ......to..实现切换
5.指定展示视图的位置<router-view/>
编写路由配置项
1先引入路由插件 
import VueRouter from ("vue-router")
2引入用到的组件
import a from "./路径"
3.创建一个路由实例
const router = new VueRouter({
//4.配置路由规则
routes:[
    {
        path:'',
        component:a
	},
	 {
        path:'',
        component:a
	},
]
})
5.暴露router
export default router

路由在单页面应用中切换的时候,不显示出来的路由组件默认是被销毁的,当需要用到的时候在重新挂载,每一个组件都有自己的一个 r o u t e 属性,在这个属性里面可以查看自己的路由信息,但是在整个应用中只有一个 r o u t e r ,可以通过 route属性,在这个属性里面可以查看自己的路由信息,但是在整个应用中只有一个router,可以通过 route属性,在这个属性里面可以查看自己的路由信息,但是在整个应用中只有一个router,可以通过router属性获取到。

嵌套(多级)路由

嵌套路由就字面理解,路由嵌套路由,一个路由里面还要一个路由,如果设置到嵌套路由,就要在路由规则中配置子路由的路由规则

const router = new VueRouter({
routes:[
    {
        path:'',
        component:a,
        children:[
            {
              path:'',
              component:component,
            }
        ]
	},
	 {
        path:'',
        component:a
	},
]
})

且在引用的时候要将上级路由的路径携带上

<router-link to="/a/component"><router-link>

路由传参

路由传参有两种方式:query传参和params传参

使用query传参,可以配合path和name使用
path-query传参:参数会被拼接在浏览器的地址栏中,且刷新页面也不会丢失
使用params传参只能用name,不能和path搭配使用,name指的是命名路由的名字
name-params传参:刷新页面后数据会丢失

命名路由

命名路由 就是有名字的路由,我们可以先给路由起一个名字,然后就可以通过路由名字直接打开新的路由了。

const router = new VueRouter({
routes:[
    {  
    //命名路由
        name:''
        path:'',
        component:a,
        children:[
            {
              path:'',
              component:component,
            }
        ]
	},
	 {
        path:'',
        component:a
	},
]
})

编程式导航

除了使用 <router-link> 创建 a 标签来定义导航链接,还可以借助 router 的实例方法,通过编写代码来实现。this.$router.push()跳转到指定路由,会向history栈添加一个新的记录,当用户点击浏览器回退按钮的时候,可以回到跳转前的url。

this.$router.push({
                    name:'mya',
                    query:{id:1},
                    // 参数是一次性携带刷新页面 params失效
                    params:{
                        name:"terry"
                    }
                })

路由守卫

路由守卫:用来保护路由的权限

全局路由守卫

beforeEach():全局前置路由守卫,在初始化的时候被调用,每次路由切换之前被调用,传入一个回调函数,回调函数里面接收三个参数:to,from,next
afterEach():后置路由守卫,在初始化的时候被调用,每次路由切换之后被调用,传入一个回调函数,回调函数里面接收二个参数:to,from

独享路由守卫:只有前置,没有单独的后置路由守卫,但是可以和全局的路由守卫配合

beforeEnter():每次路由切换之前被调用,传入一个回调函数,回调函数里面接收三个参数:to,from,next

组件内路由守卫

beforeRouterEnter():通过路由规则进入该组件的时候被调用,传入一个回调函数,回调函数里面接收三个参数:to,from,next
afterRouterLeave():通过路由规则离开该组件的时候被调用,传入一个回调函数,回调函数里面接收三个参数:to,from,next

路由模式

路由模式有两种,一种是hash模式,另一种是history模式

hash模式:默认开启的就是hash模式,在地址栏携带一个#,#后面的路径都是以hash值的形式存储的,不包含在HTTP请求中也就是不会带给服务器,hash模式的兼容性比较好,但是在地址栏中会一直都携带着一个#,不是特别美观,如果以后将地址通过第三方手机APP分享,如果app的校验比较严格的话,地址会标记为不合法
history模式,地址栏不带#,相比之下history模式的兼容性比较差,在应用部署上线的时候需要后端人员的支持,来解决页面刷新404的问题(可以使用中间组件)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值