vuerouter用法(vue$router)
本篇文章给大家谈谈vuerouter用法,以及vue$router对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、vue-router只能在vue中使用吗
- 2、vue路由的引入和使用
- 3、vue-router导航守卫之实战篇
- 4、Vue Router 详解
- 5、21《Vue 入门教程》VueRouter 基础使用
- 6、Vue Router路由传参三种方法及区别
vue-router只能在vue中使用吗
vue-router只能在vue中使用。router是Vue.js官运肆方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。vue的单页面应用是基于路由和组件的,路由用于春悄纳设定访问路径,并将路径和组件映射起来。传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,扒没也就是组件的切换。
vue路由的引入和使用
Vue -router 是为了配合Vue.js 构建单页面应用而态庆和存在的,在使帆盯用方面差段,我们需要做的是,将组件映射到路由,然后告诉Vue-router 在哪里渲染它们。
vue-router 基本使用
router-link和router.push的区别
vue-router导航守卫之实战篇
官方这么说:
好吧,看不懂,就好(当)好(废)理(话)解(吧)下。其实,导航守卫就是路由跳转过程中的一些钩子函数,再直白点路由跳转是一个大的过程,这个大的过程分为跳转前中后等等细小的过程,在每一个过程中都有一函数,这个函数能让你操作一些其他的事儿的时机,这就是导航守卫。
先看一个钩子函数执行后输出的顺序截图吧,一般讲解都会在之后呈现,给大家换种思路(也就是先预习再学习最后复习)
[图片上传失败...(image-b044c6-1632499247491)]
好吧不知道的估计看不懂吧!不过我希望你能看到一个点能多倒回来看看这个顺序,前方干货预警
导航守卫分为 :全局的、单个路由独享的、组件内的三种。分别来看一下:
【全局的】敏嫌:是指路由实例上直接操作的钩子函数,他的特点是所有路由配置的组件都会触发,直白点就是触发路由就会触发这些钩子函数,如下的写法。钩子函数按执行顺序包括beforeEach、beforeResolve(2.5+)、afterEach三个(以下的钩子函数都是按执行顺序讲解的):
[beforeEach]:在路由跳转前触发,参数包括to,from,next(参数会单独介绍)三个,这个钩子作用主要是用于登录验证,也就是路由还没跳转提前告知,以免跳转了再通知就为时已晚。
[beforeResolve](2.5+):这个钩子和beforeEach类似,也是路由跳转前触发,参数也是to,from,next三个,和beforeEach区别官方解释为:
即在 beforeEach 和 组件内beforeRouteEnter 之后,afterEach之前调用。
[afterEach]:和beforeEach相反,他是在路由跳转完成后触发,参数包括to,from没有了next(参数会单独介绍),他发生在beforeEach和beforeResolve之后,beforeRouteEnter(组件内守卫,后讲)之前。
【路由独绝毁享的】是指在单个路由配置的时候也可以设置的钩子函数,其位置就是下面示例中的位置,也就是像Foo这样的组件都存在这样的钩子函数。目前他只有一个钩子函数beforeEnter:
[beforeEnter]:和beforeEach完全相同,如果都设置则在beforeEach之后紧随执行,参数to、from、next
【组件内的】:是指在组件内执行的钩子函数,类似于组件内的生命周期,相当于为配置路由的组件添加的生命周期钩子函数。钩子函数按执行顺并拿备序包括beforeRouteEnter、beforeRouteUpdate (2.2+)、beforeRouteLeave三个,执行位置如下:
[beforeRouteEnter]:路由进入之前调用,参数包括to,from,next。该钩子在全局守卫beforeEach和独享守卫beforeEnter之后,全局beforeResolve和全局afterEach之前调用,要注意的是该守卫内访问不到组件的实例,也就是this为undefined,也就是他在beforeCreate生命周期前触发。在这个钩子函数中,可以通过传一个回调给 next来访问组件实例。在导航被确认的时候执行回调,并且把组件实例作为回调方法的参数,可以在这个守卫中请求服务端获取数据,当成功获取并能进入路由时,调用next并在回调中通过 vm访问组件实例进行赋值等操作,(next中函数的调用在mounted之后:为了确保能对组件实例的完整访问)。
[beforeRouteUpdate] (v 2.2+):在当前路由改变时,并且该组件被复用时调用,可以通过this访问实例。参数包括to,from,next。可能有的同学会疑问,what is 路由改变 or what is 组件被复用?
[beforeRouteLeave]:导航离开该组件的对应路由时调用,可以访问组件实例 this ,参数包括to,from,next。
至此,所有钩子函数介绍完毕。
屡一下哈:
全局路由钩子:beforeEach(to,from, next)、beforeResolve(to,from, next)、afterEach(to,from);
独享路由钩子:beforeEnter(to,from, next);
组件内路由钩子:beforeRouteEnter(to,from, next)、beforeRouteUpdate(to,from, next)、beforeRouteLeave(to,from, next)
不知道你是否还记得to、from、next这三个参数
下面请重头把这几个钩子函数的参数看一遍,细心的同学可以看见在afterEach钩子中参数没有next,为什么呢?
to:目标路由对象;
from:即将要离开的路由对象;
next:他是最重要的一个参数,他相当于佛珠的线,把一个一个珠子逐个串起来。以下注意点务必牢记:
1.但凡涉及到有next参数的钩子,必须调用next() 才能继续往下执行下一个钩子,否则路由跳转等会停止。
2.如果要中断当前的导航要调用next(false)。如果浏览器的 URL 改变了 (可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。(主要用于登录验证不通过的处理)
3.当然next可以这样使用,next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。意思是当前的导航被中断,然后进行一个新的导航。可传递的参数与 router.push 中选项一致。
4.在beforeRouteEnter钩子中next((vm)={})内接收的回调函数参数为当前组件的实例vm,这个回调函数在生命周期mounted之后调用,也就是,他是所有导航守卫和生命周期函数最后执行的那个钩子。
5.next(error): (v2.4.0+) 如果传入 next 的参数是一个 Error 实例,则导航会被终止且该错误会被传递给 [router.onError()]() 注册过的回调。
好了,还记得那个截图吗,我们再看一遍
[图片上传失败...(image-940ea2-1632499247491)]
我们最后屡一下顺序:
当点击切换路由时:beforeRouterLeave--beforeEach--beforeEnter--beforeRouteEnter--beforeResolve--afterEach--beforeCreate--created--beforeMount--mounted--beforeRouteEnter的next的回调
当路由更新时:beforeRouteUpdate
Vue Router 详解
hash本质上是改变window.location的href属性 ,你只能改变#后面的url片段。 我们可以通过直接赋值location.hash来改变href, 但是页面不发生刷新
history接口脊纳掘是HTML5新增的, history 它有五种模式改变URL而不刷新页面.
(1)params 刷新页面参数会丢失
(2)query 刷新页面参樱核数不丢失
全局守卫:
跳转前: router.beforeEach((to,from,next)={
to: Route : 即将要进入的目标 [路由对象]
from: Route : 当前导航正要离开的路由
next: Function : 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。
next() : 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。
next(false) : 中断当前的导航。如果浏览器的 URL 改变了 (可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。
next('/') 或者 next({ path: '/' }) : 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。你茄灶可以向 next 传递任意位置对象,且允许设置诸如 replace: true、name: 'home' 之类的选项以及任何用在router-link 的 to prop 或 router.push中的选项。
next(error)导航会被终止且该错误会被传递给 router.onError()注册过的回调
})
跳转后 : router.afterEach((to,from)={// ...})
beforeEnter: (to, from, next) = { }
router.push(url) 导航到新url,向 history栈添加一条新访问记录,等同于window.history.pushState
router.replace(url) 导航到新url,替换 history 栈中当前记录,等同于window.history.replaceState
router.go(n) 在 history 记录中向前或者后退多少步,类似 window.history.go(n)
router.go(1) 在浏览器记录中前进一步,等同于 history.forward()
router.go(-1) 后退一步记录,等同于 history.back()
router.go(0) 刷新当前页面
router.back() 导航回退一步,类似于router.go(-1)
router. forward() 导航前进一步,但是不刷新前进页的表单,类似于router.go(1)
[img]21《Vue 入门教程》VueRouter 基础使用
本小节我们介绍如何在 Vue 项目中使用 VueRouter。包括 VueRouter 的下载、什么是 VueRouter、如何使用 VueRouter 配置一个单页应用。其中,学习使用 VueRouter 配置一个单页应用是本节的重点。同学们在学完本节课程之后需要自己多尝试配颂滚碧置路由。
我们可以在官网 (VueRouter) 上直接下载 VueRouter 。 在 Vue 之后引入 VueRouter 会进行自动安装:
在一个模块化的打包系统中,您必须显式地通过 Vue.use () 来安装 Vuex:
在本章节的 VueRouter 学习中,我们都将使用 CDN 的方备芹式引入路由。
用 Vue.js + VueRouter 创建单页应用,是非常简单的。使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 VueRouter 添加进来,我们需要做的是,将组件 (components) 映射到路由 (routes),然后告诉 VueRouter 在哪里渲染它们。 在使用 VueRouter 之前,我们需要先了解 VueRouter 的两个内置组件:
接下来我们看一个基本例子:
实例演示
"运行案例" 可查看在线运行效果
代码解释: HTML 代码第 12-13 行,我们定义了两个跳转链接; HTML 代码第 15 行,我们使用 组件来渲染匹配组件; JS 代码第 5-7 行,我们定义了组件 Index; JS 代码第 9-11 行,我们定义了组件 Article; JS 代码第 13-16 行,我们定义了路由数组:
JS 代码第 18-20 行,创建 router 实例,然后传 routes 配置。 JS 代码第 24 行,通过 router 配置参数注野举入路由。
本节,我们带大家学习了 VueRouter。主要知识点有以下几点:
Vue Router路由传参三种方法及区别
1、第一种方法:拼接方式:
methods:{
handleClick(id) {//直接调用$router.push 实现携带参数的跳转
this.$router.push({path: `/detail/${id}`,})
}
对应路由配置:
{
path:'/detail/:id',
name:'detail',
component: detail
} 获取参数方式: this.$route.params.id
2、第二种方法:params传参 (通过路由属性中的name来确定匹配的路由,通过params来传递参数。)
methods:{
handleClick(id) {
this.$router.push({name:'detail', // 根据name确定匹配路由params: {id: id}})
}
//或者采用router-link前往Detail页面
router-link :to="{name: 'detail', params: { id: 1 }}"前往Detail页面/router-link
对应路由配置:
{
path:'/橡派detail/:id',
name:'detail',
component: detail
} 获取参数方式: this.$route.params.id
三、第三种方法:query传参
使用path来匹配路由,然后通过query来传递参数,这种情况下 query传递的参数会显示在url后面?id=?
methods:{
handleClick(id) {
this.$router.push({path:'/detail',query: {id: id}})
}
对应路由配置:
{
path:'/detail',
name:'detail',
component: detail
} //获梁枝贺取参数:this.$route.query.id
四、搭激总结:params和query中的区别
1、接收方式
query传参:this.$route.query.id
params传参:this.$route.params.id
2、路由展现方式
query传参:/detail?id=1user=123identity=1更多参数
params传参:/detail/123
关于vuerouter用法和vue$router的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。