Vue-Router模式和钩子的用法
上一篇主要写了一下vuer-router的基本使用,可以说解决温饱了,下面就再来点下午茶吧 模式vue-router中的模式选项主要在router实例化的时候进行定义的,如下 有两种模式可供选择,history 和 hash,大致对比一下,
hash模式对于后台来讲就是一个url,因为地址中的hash值是不会传到后台的,所以服务器端做一个根地址的映射就可以了。 history模式最终的路由都体现在url的pathname中,这部分是会传到服务器端的,因此需要服务端对每一个可能的path值都作相应的映射。或者采用模糊匹配的方式进行映射。 除此之外,history模式下,如果后端不是一对一的进行映射,而是模糊匹配的话,那么就要注意一下404的情况了。这个时候就需要在前端router中定义404页面了。 404路由的定义由于router本身的匹配是从上到下的,如果在前面找到了匹配的路由,就跳转了。因此可以直接在最后添加404的路由,如下 在前面匹配不到的时候,* 代表全部,就是都指向404页面 路由钩子路由钩子主要是给使用者在路由发生变化时进行一些特殊的处理而定义的,靠。。好拗口啊。 总体来讲vue里面提供了三大类钩子 1、全局钩子 2、某个路由独享的钩子 3、组件内钩子 全局钩子顾名思义,全局钩子全局用,使用如下 router.beforeEach((to,from,next) => {
document.title = to.meta.title || 'demo' if (!to.query.url && from.query.url) { to.query.url = from.query.url } next() }) router.afterEach(route => { 某个路由独享钩子就像说的一样,给某个路由单独使用的,本质上和后面的组件内钩子是一样的。都是特指的某个路由。不同的是,这里的一般定义在router当中,而不是在组件内。如下 {
// ...
},beforeLeave: (to,next) => {
// ...
}
}
]
})
组件内钩子首先看一下官方定义: 你可以在路由组件内直接定义以下路由导航钩子
路由组件!路由组件!路由组件!重要的事情说三遍,大家一定要注意这里说的是“路由组件”,而路由组件!== 组件,路由组件!== 组件,路由组件!== 组件!之前一直没注意这点,然后在子组件里面傻乎乎的调钩子函数发现一直没用。。。 我们先来看一下什么是路由组件? 路由组件:直接定义在router中component处的组件 也就是说router中定义的入口vue文件之外的组件,是没有钩子函数的,也就不用说使用了。但是如果你使用了并不会报错,只是没反应。(本想画个图的,太懒了。。。自己理解理解吧,很好理解的) 这里再回头看下这个路由内钩子是怎么用的,很简单和data、method平级的方法 三种路由钩子中都涉及到了三个参数,这里直接上官方介绍吧
模式和钩子基本就到这了,有需要的可以在仔细研究一个官当的文档。以上仅是个人学习使用过程的一些理解,希望对大家的学习有所帮助,也希望大家多多支持编程之家。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |