一.安装vue-router
vue-router是一个插件包,所以我们还是需要用npm来进行安装的。打开命令行工具,进入你的项目目录,输入下面命令。
npm install vue-router --save
二.解读router/index.js文件
我们用vue-cli生产了我们的项目结构,你可以在src/router/index.js文件,这个文件就是路由的核心文件
importRouterfrom'vue-router'//引入vue-router
importHellofrom'@/components/Hello'//引入根目录下的Hello.vue组件
Vue.use(Router)//Vue全局使用Router
exportdefaultnewRouter({
routes:[//配置路由,这里是个数组
{//每一个链接都是一个对象
path:'/',//链接路径
name:'Hello',//路由名称,
component:Hello//对应的组件模板
}
]
})
三.简易导航制作
1》改造App.vue的导航代码
2》改写components/Hi.vue页面
3》在components目录下新建两个组件模板 Hi1.vue 和 Hi2.vue
4》修改router/index.js代码
四.vue-router如何参数传递
方法1,使用name传参(实际开发并不常用)
(1)在路由配置文件中写name
(2)App.vue 中接收参数{{ $route.name }}}
方法2,修改html模板中的router-link标签
注意事项:
(1)name的值要和路由配置中的name保持一致
(2)参数params的值可以传多个,是对象的形式存在的 key:value
操作方法:
1.router文件中index.js
2.App.vue文件(注意,如果为动态传参,提前必须加v-bind:或者其缩写:)
3.组件文件中的hi1.vue文件
最终显示效果为
方法3.vue-router 利用url传递参数---- :冒号的形式传递参数
在配置文件里以冒号的形式设置参数。我们在/src/router/index.js文件里配置路由。
我们需要传递参数是新闻ID(newsId)和新闻标题(newsTitle).所以我们在路由配置文件里制定了这两个值。
在src/components目录下建立我们params.vue组件,也可以说是页面。我们在页面里输出了url传递的的新闻ID和新闻标题。
在App.vue文件里加入我们的标签。这时候我们可以直接利用url传值了。
扩展:url里面的正则
加入正则需要在路由配置文件里(/src/router/index.js)以圆括号的形式加入。
path:'/params/:newsId(\\d+)/:newsTitle',
加入了正则,我们再传递数字之外的其他参数,params.vue组件就没有办法接收到。
五.单页面多路由区域操作
实际需求是这样的,在一个页面里我们有2个以上区域,我们通过配置路由的js文件,来操作这些区域的内容。例如我们在src/App.vue里加上两个标签。我们用vue-cli建立了新的项目,并打开了src目录下的App.vue文件,在下面新写了两行标签,并加入了些CSS样式。
现在的页面中有了三个标签,也就是说我们需要在路由里配置这三个区域,配置主要是在components字段里进行。
六.vue-router 的重定向-redirect
redirect基本重定向
路由文件index.js配置路由
App.vue文件
重定向时传递参数
路由文件index.js配置路由(redirect直接写要跳转的路径)
App.vue文件
七.alias别名的使用
1.首先我们在路由配置文件里(/src/router/index.js),给Home路径起一个别名,huaqian。
2.配置我们的,起过别名之后,可以直接使用标签里的to属性,进行重新定向。
redirect和alias的区别
redirect:仔细观察URL,redirect是直接改变了url的值,把url变成了真实的path路径。
alias:URL路径没有别改变,这种情况更友好,让用户知道自己访问的路径,只是改变了中的内容。
填坑:
别名请不要用在path为’/’中,如下代码的别名是不起作用的。{
path:'/',
component:Hello,
alias:'/home'
}
八.路由的过渡动画
<transition>标签
想让路由有过渡动画,需要在标签的外部添加标签,标签还需要一个name属性。
我们在/src/App.vue文件里添加了标签,并给标签起了一个名字叫fade。
其中过渡模式mode里面的值out-in指的是先退出后进入。默认是in-out
in-out:新元素先进入过渡,完成之后当前元素过渡离开。
out-in:当前元素先进行过渡离开,离开完成后新元素过渡进入。
css过渡类名:
组件过渡过程中,会有四个CSS类名进行切换,这四个类名与transition的name属性有关,比如name=”fade”,会有如下四个CSS类名:
fade-enter:进入过渡的开始状态,元素被插入时生效,只应用一帧后立刻删除。
fade-enter-active:进入过渡的结束状态,元素被插入时就生效,在过渡过程完成后移除。
fade-leave:离开过渡的开始状态,元素被删除时触发,只应用一帧后立刻删除。
fade-leave-active:离开过渡的结束状态,元素被删除时生效,离开过渡完成后被删除。
从上面四个类名可以看出,fade-enter-active和fade-leave-active在整个进入或离开过程中都有效,所以CSS的transition属性在这两个类下进行设置。
那我们就在App.vue页面里加入四种CSS样式效果,并利用CSS3的transition属性控制动画的具体效果。代码如下:
九.mode的设置和404页面的处理
mode的两个值
histroy:当你使用 history 模式时,URL 就像正常的 url,例如 http://jsapng.com/lms/,也好看!
hash:默认’hash’值,但是hash看起来就像无意义的字符排列,不太好看也不符合我们一般的网址浏览习惯。
404页面的设置:
用户会经常输错页面,当用户输错页面时,我们希望给他一个友好的提示,为此美工都会设计一个漂亮的页面,这个页面就是我们常说的404页面。vue-router也为我们提供了这样的机制.
1.设置我们的路由配置文件(/src/router/index.js):
2.新建404页面:
在/src/components/文件夹下新建一个Error.vue的文件。简单输入一些有关错误页面的内容。
3.我们在用瞎写一个标签的路径。<route-link></route-link>
十.路由中的钩子
路由配置文件中的钩子函数
我们可以直接在路由配置文件(/src/router/index.js)中写钩子函数。但是在路由文件中我们只能写一个beforeEnter,就是在进入此路由配置时。先来看一段具体的代码:
我们在params路由里配置了bdforeEnter得钩子函数,函数我们采用了ES6的箭头函数,需要传递三个参数。我们并在箭头函数中打印了to和from函数。具体打印内容可以在控制台查看object。
三个参数:
to:路由将要跳转的路径信息,信息是包含在对像里边的。
from:路径跳转前的路径信息,也是一个对象的形式。
next:路由的控制参数,常用的有next(true)和next(false)。
写在模板中的钩子函数
在配置文件中的钩子函数,只有一个钩子-beforeEnter,如果我们写在模板中就可以有两个钩子函数可以使用:
beforeRouteEnter:在路由进入前的钩子函数。
beforeRouteLeave:在路由离开前的钩子函数。
这是我们写在params.vue模板里的路由钩子函数。它可以监控到路由的进入和路由的离开,也可以轻易的读出to和from的值。
十一.编程式导航
this.$router.go(-1) 和 this.$router.go(1)
这两个编程式导航的意思是后退和前进,功能跟我们浏览器上的后退和前进按钮一样,这在业务逻辑中经常用到。比如条件不满足时,我们需要后退。
router.go(-1)代表着后退,我们可以让我们的导航进行后退,并且我们的地址栏也是有所变化的。
1.我们先在app.vue文件里加入一个按钮,按钮并绑定一个goback( )方法。
2.在我们的script模块中写入goback()方法,并使用this.$router.go(-1),进行后退操作。
this.$router.push(‘/xxx ‘)
这个编程式导航都作用就是跳转,比如我们判断用户名和密码正确时,需要跳转到用户中心页面或者首页,都用到这个编程的方法来操作路由。
我们设置一个按钮,点击按钮后回到站点首页。如上图