微信开发中 ACCESS TOKEN 过期失效的解决方案详解
1037
2022-11-26
第十一章:vue路由配置01基础
第十一章:vue路由配置01基础
回顾:
动态组件:< component :is=‘’>
keep-alive include exclude max
插槽:
匿名插槽 default
具名插槽
作用域插槽
v-slot:name=‘obj’ # < template>
自定义指令:directive
局部:directives 当前组件范围内
对象式:对象的名字就是指令的名字
bind(), 当指令跟DOM元素绑定的时候
inserted(),当DOM元素插入结构中的时候
update()当数据发生更新时执行
函数式:函数的名字就是指令的名字
全局:main.js中 Vue.directive
渲染:
本章任务
掌握vue路由配置的基本操作姿势
本章内容
理解路由的作用掌握一级路由的配置方法掌握二级路由(嵌套路由)的配置方法掌握路由传参的使用方法
一、路由
举个栗子:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JrteIv8T-1655272924474)(assets/image-20220226140815179.png)]
对来说路由器:路由就是 一个路由接口对应一台终端设备。key===value
< component :is=‘aaa’>aaa === AAA.vue
< iframe name=‘aaa’ > < a href=“独立的 html 页面” target=‘aaa’>
1.1 什么是路由
Vue Router 是 Vue.js 官方的路由管理器。Vue.js 路由允许我们通过不同的 URL 访问不同的内容。根据 url 锚点路径,在容器中加载不同的模块,本质作用是做页面导航。
路由的本质就是一种对应关系,比如说我们在url地址中输入我们要访问的url地址之后,浏览器要去请求这个url地址对应的资源。 那么url地址和真实的资源之间就有一种对应的关系,就是路由。
路由分为前端路由和后端路由
后端路由是由服务器端进行实现,并完成资源的分发.概念: 根据不同的URL请求,返回不同的内容本质: URL请求地址与服务器资源之间的对应关系前端路由是依靠hash值(锚链接)的变化进行实现概念: 根据不同的事件显示不同的页面内容,即事件与事件处理函数之间的对应关系.前端路由主要做监听事件并分发执行事件处理函数
路由:实际上就是一组对应关系。
一个路径对应一个路由组件。 这个路径表示的仅仅是纯前端级 组件跳转。类似于锚点。
1.2 为什么要用路由
主要目的:就是为了开发SPA应用
SPA: single page web application。单页Web应用(single page web application,SPA),就是只有一张Web页面的应用。单页应用程序 (SPA) 是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。 [1] 浏览器一开始会加载必需的HTML、CSS和JavaScript,所有的操作都在这张页面上完成,都由JavaScript来控制。因此,对单页应用来说模块化的开发和设计显得相当重要。
速度:更好的用户体验,让用户在web app感受native app的速度和流畅,
·MVVM:经典MVVM开发模式,前后端各负其责。
·ajax:重前端,业务逻辑全部在本地操作,数据都需要通过AJAX同步、提交。
·路由:在URL中采用#号来作为当前视图的地址,改变#号后的参数,页面并不会重载。
通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)(单页面应用开发)
一种特殊的Web应用。它将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HTML、JavaScript、CSS。一旦页面加载完成,SPA不会因为用户的操作而进行页面的重新加载或跳转,而是利用JavaScript动态的变换HTML(采用的是div切换显示和隐藏),从而实现UI与用户的交互
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SuaeCTGo-1655272924476)(assets/image-20220225221554642.png)]
1.3 路由的工作原理
路由渲染的本质其实是超链接锚点:通过location.href可以获取到当前的路径地址,通过location.hash可以获得锚点的名字内容,也就是#name 。
这就意味着,我们要实时的监听浏览器地址栏中的内容,只要地址栏的内容发生了改变,我们就要获取到 地址栏中末尾位置的路径地址 然后根据这个路径地址 来渲染出不同的组件。需要监听事件onhashChange 只要地址发生改变 这个事件就可以触发。
1.4 路由的使用和配置
路由官网
/ CDN
CDN:vue-router.js 库来引入路由功能模块
NPM
安装路由 vue2.x版本对应 vue-router3 vue3.x对应vue-router4npm install vue-router@3/@4
1.4.1 路由的配置
安装在src目录下创建router文件夹,并在其内创建index.js作为vue路由功能模块js文件
//1.导入vue和vue-router模块import Vue from 'vue'import VueRouter from 'vue-router'//使用路由模块 注册路由模块Vue.use(VueRouter)//2.导入我们自己需要的组件 路由组件import Student from '../views/Student.vue'//import Subject from '../views/Subject.vue'//3.配置路由规则 映射关系/对应关系const routes = [ { path: '/stu', component: Student }, { path: '/sub', component: ()=>import('../views/Subject.vue') },]//4.创建路由器对象,向外暴漏export default new VueRouter({ routes})
在main.js入口文件中实例化vue对象,并注册路由
import Vue from 'vue'import App from './App.vue'//导入路由import router from './router/index.js'Vue.config.productionTip = falsenew Vue({ router,//注册路由 render: h => h(App)}).$mount('#app')
在页面定义导航和路由出口
通过< router-link to="/路径">< /router-link>标签配置路由导航
通过< router-view>< /router-view>标签渲染组件把这个标签写在要渲染组件的位置就可以了。
注意: 路由的切换会导致组件销毁,如果不想销毁可以参考使用 keep-alive
注意: 此时在路由渲染的组件中添加mounted生命周期钩子 打印输出this 会发现 vue组件实例对象上多出两个属性:
$route 和 $router
$route 指的是当前路由组件的配置相关的信息(参数对象),$router指的是整个路由器对象 (导航对象)
1.4.2 路由重定向 redirect
当我们打开项目访问页面时,访问的路径是根路径 是一个单独的/ ,路由中并没有与之对应的匹配规则,所以此时我们可以设置redirect属性 来作为路由打开时 默认访问的组件页面。
//redirect 用来配置重定向 //当访问 / 时 会把路径重定向到 stu { path: '/', redirect: "sub" },
1.4.3 二级路由(嵌套路由)/多级路由
注意: 二级路由,path分配,前面不要有 /
#二级路由配置routes:[ { path:'/home', children:[ //redirect 重定向 通过这个属性可以设置 默认展示的子路由组件 {path:"/",redirect:"list"}, {path:'tv',component:()=>import('./../components/tv.vue')}, {path:'music',component:()=>import('./../components/music.vue')} ] }]#在一级路由组件模版中定义二级路由导航和路由出口
1.5 动态路由匹配(路由传参)
1.5.1 参数传递一 (: 传递参数)
**简介:**我们经常需要把某种模式匹配到的所有路由,全都映射到一个同样的组件。例如,我们有一个StudentInfo组件,对于所有 ID学号 各不相同的学生,都要使用这个组件来渲染学生信息。
把hash地址中可变的部分定义为参数项,可以提高路由的可复用性。我们可以在 vue-router 的路由路径中使用“动态路径参数”来达到这个效果,使用:表示动态路由参数。
index.js中的路由规则:
const router = new VueRouter({ routes: [ // 动态路径参数 以冒号开头 { path: 'stu/:id', component: StuInfo } ]})
此时我们可以在StuInfo组件中接收到路由中传递的参数:
当匹配到一个路由时,参数值会被设置到 this.$route.params,可以在每个组件内使用。于是,我们可以更新 学生信息的模板,输出当前用户的 ID:< div>User {{ $route.params.id }}< /div>
1.5.2 参数传递二 (props属性传递参数)
给路由开启props属性
//index.js中的路由配置//添加属性props:true;const router = new VueRouter({ routes: [ // 动态路径参数 以冒号开头 { path: 'stu/:id', component: StuInfo ,props:true} ]})
StuInfo 组件中使用props属性接收参数
export default{ // props:['id'], methods:{ aaa(){ console.log(this) } }}
补充: 注意:上边代码中
路由链接处代码:(路由传递参数的写法一):to属性的字符串拼接式
StuInfo组件中代码:可以使用$route.query接收参数
**路由传递参数的写法二:**to属性的对象式
1.6 命名路由
概念: 在定义路由时 添加一个新的配置项 name 就可以了
index.js配置中:
{ path: '/Student', //此处给路由添加一个name属性 name:'SSS', component: Student, children:[ {path:'stu/:id',component:StuInfo,props:true} ]},
路由链接处: 通过:to属性 指定 对应的路由跳转
二、总结与作业
总结今日知识点router-link>
### 1.6 命名路由**概念:** 在定义路由时 添加一个新的配置项 `name` 就可以了`index.js配置中:````js{ path: '/Student', //此处给路由添加一个name属性 name:'SSS', component: Student, children:[ {path:'stu/:id',component:StuInfo,props:true} ]},
路由链接处: 通过:to属性 指定 对应的路由跳转
二、总结与作业
总结今日知识点课堂案例
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~