*路由的对应关系:Hahs地址和组件之间的对应关系(其实就是一个路由的规则)不同的hash会展示不同页面
#/ 斜杠前面带#的为hash地址
注意:在hash地址中,/ 是用来分割路径片段的,/ 后面的参数项,叫做“路径参数”。
在路由“参数对象(route.params来访问路径参数。
注意2:在hash地址中,?后面的参数项,叫做“查询参数”。
在路由“参数对象”中,需要使用this.$route.query来访问查询参数。
注意3:在this.$route 中,path只是路径部分,fullPath是完整的地址。
例如:fullPath: "/artisticWorks/Movie/2?name=zs%20age%3D11" 是fullPath 的值。
path: "/artisticWorks/Movie/2" 是path的值。
点击了页面的路由链接,然后前端路由监听到点击的链接,找到匹配上的path,然后把之前的组件给替换,在页面上展示path 对应的组件。
Vue-router 的基本用法
安装vue-router包* 在vue2的项目中,安装vue-router的命令如下:
Npm i vue-router@3.5.2 -S
创建路由模块*
s rc/ router/index.js就是路由模块*
导入并挂载路由模块*
创建完路由模块后要在main.js中进行挂载*
声明路由链接和占位符*
先放三个链接,然后放占位符
找到路由模块,声明三条对应关系(路由规则)*
Vue-router的常见用法*
路由重定向
嵌套路由****
通过children属性声明子路由规则****
需要注意父级的hash地址,父级hash地址要完整,后面才能加上子级组件的hash地址,不然找不到****
默认子路由
动态路由匹配****
动态路由的概念****
动态路由测试 在vue-route中的path添加冒号 : 会自动给它赋值一个id
组件中,hash地址赋值的是1
根据测试:点击了喜羊羊,路由会给他赋值一个id,可以在$route.params中看到它的参数
动态路由-为路由开启props传参****
传参的方式确实比较方便
动态路由-拓展query和fullPath
注意:在hash地址中,/是用来分割路径片段的,/后面的参数项,叫做“路径参数”。
在路由“参数对象(route.params来访问路径参数。
注意2:在hash地址中,?后面的参数项,叫做“查询参数”。
在路由“参数对象”中,需要使用this.$route.query来访问查询参数。
注意3:在this.$route 中,path只是路径部分,fullPath是完整的地址。
例如:fullPath: "/artisticWorks/Movie/2?name=zs%20age%3D11" 是fullPath 的值。
path: "/artisticWorks/Movie/2" 是path的值,只包含斜线部分的值,不好含后面的查询参数。
浏览器中的数据结构
重要知识-导航****
编程式导航跳转 - push、replace、go
声明式导航 和 编程式导航****
Vue-router中的编程式导航API*
常用的三个
$route.go 的简化用法*
在行内使用编程式导航跳转的时候,this必须要省略,否则会报错!
导航守卫(路由守卫)
防止一些以外情况发生
查看时检查是否登录,未登录将强制跳转到登录页
如何声明这样的一个导航守卫
New的一个构造函数得到一个实例对象,当拿到router以后就可以定义这个 全局前置守卫
调用beforeEach(fn) 这个语法就是声明全局前置守卫的语法格式
beforeEach :每次路由发生导航之前都会触发这个fn回调函数
守卫方法的3个形参
这三个单独这么写有点看不懂?
假设A跳转到C
To是C,指向的是去哪个位置
From则是A,是要离开这个A路由的信息对象
Next是函数next(),A跳转C之前会触发这个(fn)回调函数,在回调函数中调用next()函数,则表示允许这次路由导航
Next函数的3种调用方式 权限****
// 分析:
// 1. 要拿到用户将要访问的hash地址
// 2. 判断 hash地址是否等于 /Main。
// 2.1 如果等于 /main,证明需要登录之后,才能访问成功
// 2.2 如果不等于 /main,则不需要登录。直接放行 next()
// 3. 如果访问的地址是 /main,则需要读取loaclStorage中的token值
// 3.2如果没有token,则强制跳转到 /login登录页
LoaclStorage:
手写个假的token 这样就可以登录了
对于这个token,一般是前端生成一个然后post传给后端的(如果我没记错的话)
拓展:锚链接(hashmap)可以在当前页面中上下前往
锚链接简单写法,点击#b1就根据id跳转到#b1的位置
通过location.xxx 可以拿到一些信息
再拓展 如何控制页面的权限
路径可以存在数组中,然后只要判断到to.path在数组里面存在,就证明它是一个有权限的页面。 通关indexOf()查找 如果pahtArr数组里面 .indexOf(to.path) 不等于 -1 就证明to.path在数组里边,在的话就证明to.path是一个有权限的页面
或者是通过封装来导入这些hash地址