第九 VUE is 【路由】
路由
可参考文献 简书:https://www.jianshu.com/p/2acf9e23793a
有梦想的咸鱼前端博客:https://www.cnblogs.com/dengyao-blogs/p/11562257.html
vue2.0中router-link详解:https://blog.csdn.net/lhjuejiang/article/details/81082090
2.0 安装
2.1
一级路由
路由文件中 index.js
//首先你要引入你要渲染的组件
import Index from '@/components/index'
import Detail from '@/components/detail'
//在路线中去定义一下
routes:[
{
path:'/index',
component:Index
},
{
path:'/detail',
component:Detail
},
{
path:'*',
redirect:'/index'//重定向
}
]
-------------------------
app.vue中
//渲染路由 路由出口
<router-view></router-view>
或者
<router-view />
2.2 嵌套路由
路由文件中 index.js
//首先你要引入你要渲染的组件
//一级路由
import Index from '@/components/index'
import Detail from '@/components/detail'
//二级路由
import Car from '@/components/car'
import Mine from '@/components/mine'
import Home from '@/components/home'
//在路线中去定义一下(二级路由如果不加/ 那么要带着一级路由地址)
//routes 路线 这个数组中会有大量路线
//当前二级路由如果地址前面加'/',那么就可以省略一级地址,在routerLink标签中,to属性='/二级路由地址'
//当前二级路由如果地址前面没有加'/',那么在routerLink标签中,to属性='/一级地址/二级路由地址' 路由中的path也是一样 path:'/一级地址/二级路由地址'
routes:[
{
path:'/index',
component:Index,
children:[
{
path:'/home',
component:Home
},
{
path:'/mine',
component:Mine
},
{
path:'/car',
component:Car
},
{
path:'',
redirect:'/home'
}
]
},
{
path:'/detail',
component:Detail
},
{
path:'*',
redirect:'/index'//重定向
}
]
---------------------
app.vue中
//渲染路由 路由出口
<router-view></router-view>
或者
<router-view />
-------------------
index.vue中
//二级视图
<router-link to='/跟path一样的地址'>首页</router-link>
<router-link to='/跟path一样的地址'>购物车</router-link>
<router-link to='/跟path一样的地址'>个人中心</router-link>
//渲染路由 路由出口(二级的)
<router-view></router-view>
或者
<router-view />
2.3 动态路由
2.4 编程式导航
this.$router.push() 向历史记录中添加一条数据
传值的时候可以(replace和push是一个用法)this.$router.push('路径')
this.$router.push({ path:'/路径', query:{key:value} })
this.$router.replace() 替换当前数据
this.$router.go(-1) 回退上一个页面
2.5 路由守卫
2.6 滚动行为
2.7 路由的零散知识点
<router-link>组件支持用户在具有路由功能的应用中点击导航。
通过to属性指定目标地址,默认渲染为带有正确连接的<a>标签,可以通过配置tag属性生成别的标签。
另外,当目标路由成功激活时,链接元素自动设置一个表示激活的css类名
<router-link>组件的属性有:
to 、replace、 append、 tag、 active-class、 exact 、 event、 exact-active-class
1、to(必选参数):类型string/location
表示目标路由的链接,该值可以是一个字符串,也可以是动态绑定的描述目标位置的对象
2、tag
类型: string
默认值: "a"
如果想要 <router-link> 渲染成某种标签,例如 <li>。 于是我们使用 tag prop 类指定何种标签,同样它还是会监听点击,触发导航。
<router-link :to="'index'"
tag="li"
event="mouseover">Home
</router-link>
如果此时我们想要在这个li标签中添加a标签,如下所示,可以不为a标签添加href属性即可哦
<router-link :to="{name:'Home'}" tag="li">
<a>Home</a>
</router-link>
在这种情况下,<a> 将作为真实的链接 (它会获得正确的 href 的),而 "激活时的CSS类名" 则设置到外层的 <li>。
3、active-class
类型: string
默认值: "router-link-active"
设置 链接激活时使用的 CSS 类名。默认值可以通过路由的构造选项 linkActiveClass 来全局配置。
4、exact-active-class
类型: string
默认值: "router-link-exact-active"
配置当链接被精确匹配的时候应该激活的 class。注意默认值也是可以通过路由构造函数选项 linkExactActiveClass 进行全局配置的。
5、exact
类型: boolean
默认值: false
"是否激活" 默认类名的依据是 inclusive match (全包含匹配)。 举个例子,如果当前的路径是 /a 开头的,那么 <router-link to="/a"> 也会被设置 CSS 类名。
按照这个规则,每个路由都会激活<router-link to="/">!想要链接使用 "exact 匹配模式",则使用 exact 属性:
6、event
类型: string | Array<string>
默认值: 'click'
声明可以用来触发导航的事件。可以是一个字符串。
<router-link to="/document" event="mouseover">document</router-link>
如果我们不加event,那么默认情况下是当我们点击document的时候,跳转到相应的页面,但当我们加上event的时候,就可以改变触发导航的事件,比如鼠标移入事
7、replace
类型: boolean
默认值: false
设置 replace 属性的话,当点击时,会调用 router.replace() 而不是 router.push(),于是导航后不会留下 history 记录。
8、append
类型: boolean
默认值: false
设置 append 属性后,则在当前 (相对) 路径前添加基路径
router-view 的理解
主要是构建 SPA (单页应用) 时,方便渲染你指定路由对应的组件。你可以 router-view
当做是一个容器,它渲染的组件是你使用 vue-router 指定的。比如:
视图层:
-
<div id="app">
-
<router-view></router-view>
-
</div>
路由定义:
-
router.map({
-
'/foo': {
-
// 路由匹配到/foo时,会渲染一个Foo组件
-
component: Foo
-
}
-
})
初始化实例:
-
// start app
-
var App = Vue.extend({})
-
router.start(App, '#app')
当你访问 /foo
时,router-view
就被 Foo
组件替换了。
组件的嵌套,一样的逻辑,看下文档和demo吧。路由嵌套
小坑一把:https://www.jianshu.com/p/cf2fb443620f
原文地址:https://www.cnblogs.com/3526527690qq/p/12422948.html
- 关于shell中的pl/sql脚本错误排查与分析(r4笔记第21天)
- 关于BFC不会被浮动元素遮盖的一些解释
- MyBatis + MySQL返回插入成功后的主键id
- struts2+spring+hibernate整合步骤(1)
- 微信公众号问题:{"errcode":40125,"errmsg":"invalid appsecret, view more at http://t.cn/LOEdzVq, hints: [
- reflow和repaint(摘录自张鑫旭的翻译)
- git删除本地分支
- org.springframework.data.redis.serializer.SerializationException: Cannot serialize;
- 样式化加载失败的图片
- 使用telnet命令验证邮箱(r4笔记第19天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十二)Spring集成Redis缓存
- 前端开发中的字符编码
- 算法工程师的面试难不难,如何准备?-图像处理/CV/ML/DL到HR面总结
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Metaspace内存不足导致FGC问题排查
- useful-scripts
- 清空所有 NSUserDefaults 记录
- 重温Java Web的技术细节
- 国密算法SM2加解密_签名验签图形化例子
- 链接脚本linker script的妙用
- 【TBase开源版测评】轻松愉快去O选项:TBase
- Tungsten Fabric知识库丨更多组件内部探秘
- TRTC Android端开发接入学习之环境快速搭建(三)
- 为了满足UI小姐姐要求,自己动手实现了Android面包屑效果(支持Fragment联动)
- Jenkins持续集成「编译打包、代码检查、单元测试、环境部署、软件测试」
- 斗鱼直播带你实现:你主播最爱的Android音视频开发
- 深度解析Redis线程模型设计原理
- 聊聊claudb的hash command
- Exceptionless 5.x 无法正常发送邮件的问题解决