• vue15


    目录

    路由

    1.基本使用

    2.几个注意点

    3.多级路由(嵌套路由)

    4.路由的query参数

    5.命名路由

    6.路由的params参数

    7.路由的props配置

    8.的replace属性

    9.编程式路由导航

    10.缓存路由组件

    11.两个新的生命周期钩子

    12.路由守卫

    13.路由器的两种工作模式


    路由

    1.理解:一个路由(route)就是一组映射关系(key - value),多个路由需要路由器(router)进行
    2.前端路由: key是路径,value是组件。


    1.基本使用

    1.安装vue-router,命令:npm i vue-router
    2.应用插件:Vue.use(VueRouter)
    3.编写router配置项:

    1. //引入VueRouter
    2. import VueRouter from 'vue-router'
    3. //引入Luyou组件
    4. import About from '../ components/About'
    5. import Home from '../components/Home '
    6. //创建router实例对象并暴露,去管理一组一组的路由规则
    7. export default new VueRouter({
    8. routes: [
    9. {
    10. path: ' /about ' ,
    11. component: About
    12. },
    13. {
    14. path: ' /home ' ,
    15. component: Home
    16. }
    17. ]
    18. })

    4.实现切换(active-class可配置高亮样式)

    class="active" to="/about" >About

    5.指定展示位置

     

    2.几个注意点

    1. 路由组件通常存放在pages 文件夹,一般组件通常存放在components文件夹。
    2. 通过切换。"隐藏了的路由组件,默认是被销毁掉的,需要的时候再去挂载。
    3. 每个组件都有自己的$route属性,里面存储着自己的路由信息。
    4. 整个应用只有一个router,可以通过组件的$router属性获取到。
       

    3.多级路由(嵌套路由)

    1.配置路由规则,使用children配置项:

    1. routes: [
    2. {
    3. path : '/about' ,
    4. component: About,
    5. },
    6. {
    7. path : '/home',
    8. component : Home,
    9. children:[ //通过children配置子级路由
    10. {
    11. path : 'news '//此处一定不要写:/news
    12. component:News
    13. },
    14. {
    15. path: ' message' ,//此处一定不要写:/ message
    16. component : Message
    17. }
    18. ]
    19. }

    2.跳转(要写完整路径):
    News
     

    4.路由的query参数

    1.传递参数

    1. <router-link :to="/home/message/detail?id=666&title=你好">跳转router-link>
    2. <router-link
    3. :to="{
    4. path : ' /home/message/detail',query:{
    5. id:666,title: "你好'}
    6. >跳转router-link>

    2.接收参数:

    • $route.query .id
    • $route.query.title
       

    5.命名路由

    1.作用:可以简化路由的跳转。

    2.如何使用

    1. 1.给路由命名:
    2. path: ' (demo' ,component : Demo,children: [
    3. {
    4. pathE 'test ',component: Test,children: [
    5. {
    6. name: ' hello’//给路由命名path: jwelcome'
    7. component :fieiio,
    8. }
    9. ]
    10. }
    11. ]
    12. }


    2.简化跳转:

    1. <router-link to="/demo/test/welcome">跳转router-link>
    2. <router-link :to="iname : ' hello'}">跳转router-link>
    3. <router-link
    4. :to="{
    5. name : " hello',query:{
    6. id:666,
    7. title : '你好·
    8. >跳转router-link>


    6.路由的params参数

    1.配置路由,声明接收params参数

    1. {
    2. path : 'home ' ,
    3. component:Home,
    4. children: [
    5. {
    6. path : 'news',
    7. component:News
    8. },
    9. {
    10. component:Message,
    11. children:[
    12. {
    13. name : ' xiangqing ' ,
    14. path: 'detail/:id/:title',//使用占位符声明接收params参数
    15. component:Detail
    16. }
    17. ]
    18. }
    19. ]
    20. }


    2.传递参数

    1. <router-link :to="/home/message/detail/666/你好">跳转router-link>
    2. <router-link
    3. :to="{
    4. name : "xiangqing ',params:{
    5. id:666,
    6. title: '你好·
    7. }"
    8. >跳转router-link>


    特别注意:路由携带params参数时,若使用to的对象写法,则不能使用path配置项,必须使用name配置!
    3.接收参数:
    $route.params.F$route.params.title
     

    7.路由的props配置

    作用:让路由组件更方便的收到参数

    1. name : 'xiangqing ',
    2. path: 'detail/:id' ,
    3. component:Detail,
    4. //第一种写法:props值为对象,该对象中所有的key-value的组合最终都会通过props传给Detail组件
    5. props:{a:900}
    6. //第二种写法:props值为布尔值,布尔值为true,则把路由收到的所有params参数通过props传给Detail组件
    7. props:true
    8. //第三种写法: props值为函数,该函数返回的对象中每一组key-value都会通过props传给Detail组件
    9. props(route){
    10. return {
    11. id : route.query.id,
    12. title:route.query.title
    13. }
    14. }
    15. }

    8.的replace属性

    1.作用:控制路由跳转时操作浏览器历史记录的模式
    2.浏览器的历史记录有两种写入方式:分别为push和replace,push是追加历史记录,replace是替换当前记录。路由跳转时候默认为push
    3.如何开启replace模式:News
     

    9.编程式路由导航

    1.作用:不借助 实现路由跳转,让路由跳转更加灵活

    2.具体编码:

    1. //$router的两个API
    2. this.$router.push({
    3. name: " xiangqing',
    4. params :{
    5. id :xxx,title:xxX
    6. }
    7. })
    8. this.$router.replace({
    9. name: " xiangqing' ,
    10. params :{
    11. id :xxx,title:xXX
    12. }
    13. })
    14. this.$router.forward()//前进
    15. this.$router.back()//后退
    16. this.$router.go()//可前进也可后退


    10.缓存路由组件

    1.作用:让不展示的路由组件保持排载,不被销毁。

    ⒉.具体编码:


     

    11.两个新的生命周期钩子

    1.作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态。

    2.具体名字:
    1. activated路由组件被激活时触发。2. deactivated路由组件失活时触发。
     

    12.路由守卫

    1.作用:对路由进行权限控制
    2.分类:全局守卫、独享守卫、组件内守卫

    3.全局守卫:

    1. //全局前置守卫:初始化时执行、每次路由切换前执行
    2. router.beforeEach((to,from, next)=>{
    3. console.log( ' beforeEach' ,to,from)
    4. if(to.meta.isAuth){//判断当前路由是否需要进行权限控制
    5. if(localstorage.getItem( ' school ') === 'atguigu '){ //权限控制的具体规则
    6. next()//放行
    7. }else{
    8. alert( '暂无权限查看')// next({name : ' guanyu'})
    9. }
    10. }else{
    11. next()//放行
    12. }
    13. })
    14. //全局后置守卫:初始化时执行、每次路由切换后执行
    15. router.afterEach((to,from)=>{
    16. console.log( ' afterEach " ,to,from)if(to.meta.title){
    17. document.title = to.meta.title //修改网页的title}else{
    18. document.title = 'vue_test'
    19. }
    20. }


    4.独享守卫:

    1. beforeEnter(to,from,next){
    2. console.log( ' beforeEnter ' ,to,from)
    3. if(to.meta.isAuth){//[判断当前路由是否需要进行权限控制
    4. if(localStorage.getItem( 'school ' ) === 'atguigu '){
    5. next()
    6. }else{
    7. alert( '暂无权限查看')l l next({name : ' guanyu ' })
    8. }
    9. }else{
    10. next()
    11. }
    12. }


    5.组件内守卫:
    //进入守卫:通过路由规则,进入该组件时被调用beforeRouteEnter (to,from,next) {},
    //离开守卫:通过路由规则,离开该组件时被调用beforeRouteLeave (to,from,next) {}
     

    13.路由器的两种工作模式

    1.对于一个url来说,什么是hash值?——#及其后面的内容就是hash值。2.hash值不会包含在HTTP请求中,即: hash值不会带给服务器。
    3. hash模式:
    1.地址中永远带着#号,不美观。
    ⒉.若以后将地址通过第三方手机app分享,若app校验严格,则地址会被标记为不合法。3.兼容性较好。
    4.history模式:
    1.地址干净,美观。
    2.兼容性和hash模式相比略郄
    3.应用部署上线时需要后端人员支持,解决刷新页面服务端404的问题。
     

  • 相关阅读:
    安科瑞铁塔基站能耗监控解决方案
    MySQL为什么不推荐使用in
    Springboot实战:redisson分布式缓存、分布式锁详细教程(附git源码)
    Python期末考试题库
    Maya 复制与特殊复制
    Java 基础_框架阶段核心面试题
    鸿蒙HarmonyOS实战-ArkUI组件(页面路由)
    设计模式(五)设计原则part2
    计算机网络第6章应用层 单元测试(习题+答案+图文解析)
    PHP跨站点对接访问请求
  • 原文地址:https://blog.csdn.net/m0_66506641/article/details/126008140