vue Router——基础篇
vue——Router简介
- vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。
- vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。
- 传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换
1.动态路由匹配
定义路由
export default new Router({
routes: [
{
path: '/BookDetails/:book_id',
name: 'BookDetails',
component: BookDetails
},
{
path: '/BookDetailsTwo/user/:username/book/:book_id',
name: 'BookDetailsTwo',
component: BookDetailsTwo
},
]
})
页面
<template>
<div class="book">
<router-link :to="{ name:'BookDetails',params: { book_id: 1}}">跳转书籍详情\^o^/</router-link><br/><br/><br/>
<router-link :to="{ name:'BookDetailsTwo',params: { book_id: 1,username: '小嘟嘟'}}">跳转高级书籍详情┗|`O′|┛</router-link>
</div>
</template>
桥豆麻袋(~ ̄▽ ̄)~,对<router-link>感兴趣的可以去看 官网 ,或者 小姐姐(●'◡'●) 的博客,然后go on
点击跳转后的路由
http://localhost:8080/#/BookDetails/1
http://localhost:8080/#/BookDetailsTwo/user/小嘟嘟/book/1
跳转的页面接收路由参数(以第二个跳转为例)
<template>
<div>
<div>人员姓名:{{$route.params.username }}</div>
<div>书籍Id:{{$route.params.book_id }}</div>
</div>
</template>

1-1响应路由参数的变化
提醒一下,当使用路由参数时,例如从 /BookDetails/1 导航到 /BookDetails/2,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用。
BookDetails组件
<template>
<div class="book-details">
<div>书籍详情 Id:{{ $route.params.book_id }}</div><br/><br/>
<router-link :to="{ name:'BookDetails',params: { book_id: 2}}">自己跳自己o(* ̄▽ ̄*)ブ</router-link>
</div>
</template>
<script>
export default {
data () {
return {
}
},
created(){
console.log('进入图书详情~~~')
}
}
</script>
当从父页面跳转过来时会执行生命周期,当点击组件里‘自己跳自己’时,并不会触发生命周期
当然有解决方法,还是两种(●ˇ∀ˇ●)
方法一(使用watch (监测变化) $route 对象)
BookDetails组件
<template>
<div class="book-details">
<div>书籍详情 Id:{{ $route.params.book_id }}</div><br/><br/>
<router-link :to="{ name:'BookDetails',params: { book_id: 2}}">自己跳自己o(* ̄▽ ̄*)ブ</router-link>
</div>
</template>
<script>
export default {
data () {
return {
}
},
created(){
console.log('进入图书详情~~~')
},
watch:{
'$route'(to, from) {
console.log(to ,from, '路由监听')
}
}
}
</script>

方法二(使用beforeRouteUpdate 导航守卫)
BookDetails组件
<template>
<div class="book-details">
<div>书籍详情 Id:{{ $route.params.book_id }}</div><br/><br/>
<router-link :to="{ name:'BookDetails',params: { book_id: 2}}">自己跳自己o(* ̄▽ ̄*)ブ</router-link>
</div>
</template>
<script>
export default {
data () {
return {
}
},
created(){
console.log('进入图书详情~~~')
},
beforeRouteUpdate(to, from, next){
console.log(to, from, next,'导航守卫')
next()
},
watch:{
'$route'(to, from) {
console.log(to ,from, '路由监听')
}
}
}
</script>
注意!!!用beforeRouteUpdate记得要写next(),否则不会跳转路由

1-2捕获所有路由或 404 Not found 路由
在上面定义好的路由最后面添加新的路由
{
path: '/Fruits*',
name: 'FruitsBanana',
component: FruitsBanana
},
{
path: '*',
name: 'NotFound',
component: NotFound
}
当使用通配符路由时,请确保路由的顺序是正确的,也就是说含有通配符的路由应该放在最后。路由 { path: '*' } 通常用于客户端 404 错误
当我们输入路由
http://localhost:8080/#/FruitsApple
会匹配到‘/Fruits*’,所以会跳转到FruitsBanana组件
再次输入路由
http://localhost:8080/#/IAmVeryHappy
这时候就会匹配到 ‘*’, 自然就进入到了写好的404页面(~ ̄▽ ̄)~
1-3高级匹配模式
vue-router 使用 path-to-regexp 作为路径匹配引擎,所以支持很多高级的匹配模式,例如:可选的动态路径参数、匹配零个或多个、一个或多个,甚至是自定义正则匹配。
举个栗子(~ ̄▽ ̄)~
// 第一种(通过?的使用可以将参数变为可选项)
{
path: '/PathToRegexp/:id?',
name: 'PathToRegexp',
component: PathToRegexp
}
// 第二种(使用正则,只匹配id是数字)
{
path: '/PathToRegexp/:id(\\d+)',
name: 'PathToRegexp',
component: PathToRegexp
}
更多高级匹配
1-4匹配优先级
有时候,同一个路径可以匹配多个路由,此时,匹配的优先级就按照路由的定义顺序:谁先定义的,谁的优先级就最高。
定义路由
{
path: '/Fruits*',
name: 'FruitsBanana',
component: FruitsBanana
},
{
path: '/Fruits*',
name: 'FruitsPear',
component: FruitsPear
}
如上面所示,谁先定义的,谁的优先级就最高,只要匹配成功,就会进入到FruitsBanana组件
2.嵌套路由
Vue会自带一个 是最顶层的出口,渲染最高级路由匹配到的组件。同样地,一个被渲染组件同样可以包含自己的嵌套
呐,现在来改变一下路由
{
path: '/Fruits',
name: 'Fruits',
component: Fruits,
children: [
{
path: 'Apple',
name: 'Apple',
component: Apple
},
{
path: 'Grape',
name: 'Grape',
component: Grape
},
]
}
组件
<template>
<div>
我是水果页面<br/><br/><br/>
<router-link :to="{ name:'Apple'}">苹果
vue Router——基础篇的更多相关文章
- vue Router——进阶篇
vue Router--基础篇 1.导航守卫 正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航.有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的 ...
- Vue.js基础篇实战--一个ToDoList小应用
距离开始学Vue已经过去一个多月了,总想把学到的东西柔和在一起,做点东西出来,于是有了这个Todolist小应用. 使用vuex 纯粹基础,没有用到web pack,vuex,npm,下次把它改造一下 ...
- [Vue 牛刀小试]:第十三章 - Vue Router 基础使用再探(命名路由、命名视图、路由传参)
一.前言 在上一章的学习中,我们简单介绍了前端路由的概念,以及如何在 Vue 中通过使用 Vue Router 来实现我们的前端路由.但是在实际使用中,我们经常会遇到路由传参.或者一个页面是由多个组件 ...
- Vue Router基础
路由 安装 vue-router 起步 <router-link to="/foo">Go to Foo</router-link> <router- ...
- Vue技术点整理-Vue Router
路由 Vue Router 对于单页面应用来说,如果涉及到多个页面的话,就必须要使用到路由,一般使用官方支持的 vue-router 库 一,Vue Router 在项目中的安装引用 1,在页面中使用 ...
- 「vue基础」一篇浅显易懂的 Vue 路由使用指南( Vue Router 上)
大家好,今天的内容,我将和大家一起聊聊 Vue 路由相关的知识,如果你以前做过服务端相关的开发,那你一定会对程序的URL结构有所了解,我没记错的话也是路由映射的概念,需要进行配置. 其实前端这些框架的 ...
- vue基础篇---vue组件
vue模块第一篇,因为公司马上要用到这vue开发.早就想好好看看vue了.只有实际工作中用到才会进步最快.vue其他的简单指令就不多讲了,没啥意思,网上一大堆.看w3c就ok. 组件这个我个人感觉坑蛮 ...
- react router @4 和 vue路由 详解(一)vue路由基础和使用
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 1.vue路由基础和使用 a.大概目录 我这里建了一个router文件夹,文件夹下有in ...
- Vue 基础篇
Vue 基础篇 一.框架与库的区别 JQ库->DOM(DOM操作) + Ajax请求 art-template库->模板引擎 框架 -> 全方位.功能齐全 简易的DOM体验 + 发请 ...
随机推荐
- 每天一套题打卡|河南省第七届ACM/ICPC
A 海岛争霸 题目:Q次询问,他想知道从岛屿A 到岛屿B 有没有行驶航线,若有的话,所经过的航线,危险程度最小可能是多少. 多源点最短路,用floyd 在松弛更新:g[i][k] < g[i][ ...
- jenkins部署报404错误
环境:tomcat 7+jdk1.7+win10 64 jenkins_1.5.23 部署完成后服务器启动输入网址:http://192.168.3.100:8080/jenkins打开无法访问报40 ...
- CF1045B Space Isaac
原题链接 DOWNLOAD AS PDF 题目大意 \(0\sim m-1\)的数被分成两个集合,你可以分别从两个集合中取一个数相加并对\(m\)取模,求一不能构造出的数. 题解 感觉如果\(\col ...
- VSCode变换python的调试解释器
假如一个电脑上有多个Python的环境,想要设置不同的python解释器用于调试. VSCode 的设置,是通过.json的文本来配置的.打开文本的方式: 打开后的文件如下所示: 可以试试“new s ...
- 04-numpy-笔记-transpose
借鉴代码https://blog.csdn.net/xiongchengluo1129/article/details/79017142 吐槽一下CSDN的垃圾广告.. 这是转置,所以1维(向量)和2 ...
- 洛谷 U86564 排队形
洛谷 U86564 排队形 题目传送门 题目背景 \(JDFZ2019\)秋季运动会开始辣!为了使强大的高一 · \(6\)班有一个更好的精神面貌,班主任\(T\)老师和体委\(LY\),\(LYB\ ...
- CF1076D Edge Deletion 最短路树
问题描述 Codeforces 洛谷(有翻译) 题解 最短路树,是一棵在最短路过程中构建的树. 在\(\mathrm{Dijkstra}\)过程中,如果最终点\(y\)是由点\(x\)转移得到的,则在 ...
- Computer Network Chapter3 solution
1.校验和:各数值相加,将溢出位加到最低位,之后将结果取反.若校验和全为0,则说明接收数据正确. 2.停等协议及计算信道利用率:利用率=(L/C)/(L/C+2*传输时延) 3.回退N帧协议(协议5) ...
- web框架--tornado框架之初识
在python中常见的web框架构建模式有以下两种: *MVC框架: * 数据库相关操作的Models 视图文件的Views 业务逻辑的Controllers MTV框架: 数据库相关操作的Model ...
- html--前端jquery初识
一.把 jQuery 添加到您的网页如需使用 jQuery,需要下载 jQuery 库,然后把它包含在希望使用的网页中.jQuery 库是一个 JavaScript 文件,您可以使用 HTML 的 & ...