当前位置: 首页 > article >正文

Vue2中路由的使用

  • vue-router是vue的一个插件库,专门用于SPA(单页面应用)
  • 一个路由就是一组映射关系key-value,key是路径,value是组件
  • 创建路由表,多级路由需要配置child时不需要写父路径

mode:设置路由模式

  • hash:哈希模式,默认模式,当URL改变的时候,页面不会重新加载,在URL中会有#不太美观,当用户刷新页面的时候,如果没有正确的路由匹配,可能会显示404
  • history:可以使用HTML5的History API来实现,URL中不会出现#,在使用的时候需要服务器配置支持
import VueRouter from 'vue-router';
import Home from '../components/Home.vue';
import About from '../components/About.vue';
export default new VueRouter({
//路由工作的两种模式 默认是hash模式 mode改变模式为history模式
    mode: 'history',
    routes: [
        {
            path: '/home',
            component: Home,
            children: [
                //不需要写父路径 以及 /  也可以给路由命名 跳转时可以不用path 使用name即可
                { path: 'news', component: News,name:'news',
                    children: [
                        {
                            name: 'detail',
                            //路由使用parmas传参,跳转必须使用name不可以使用path  获取使用$route.params.id获取
                            path: 'detail/:id',
                            component: Detail,
                            //给details组件传递对象,所有数据在details中可以以props的方式接收
                            // props:{a:1,b:2}
                            //如果props是true,则路由收到的params参数会以props的形式传递 即 id 会以props方式传递
                            // props:true
                            // 如果props是函数,则路由同样以props的形式传递参数给组件,但是这可以通过route结构获取到query并传参(此处使用解构赋值的连续写法 先从route中结构获取query,再从query中结构出id,title
                            props({query:{id,title}}){ return {id,title} }
                            
                        }
                    ]
                },
                { path: 'messages', component: Message }
            ]
        },
        {
            path: '/about',
            component: About
        }
    ]
});
  • 使用route-link来实现路由切换,route-view指定路由页面的展示位置
  • 每一个组件都有自己的$route属性,存储自己的路由信息
  • 整个应用只有一个router,通过$route获取
  • 也可以借助push模式或者replace模式来实现路由跳转

keep-alive标签

可以使用keep-alive标签包含用来缓存路由组件,默认情况下缓存所有组件,可以使用:include="[‘组件名’]" 指定需要缓存的路由组件。exclude功能刚好相反

<keep-alive :include="['About']">
    <router-view></router-view>

</keep-alive>

<keep-alive :exclude="['News']">
    <router-view></router-view>

</keep-alive>

在使用keep-alive包含路由组件后,组件不会触发beforeDestory销魂流程,需要使用activated激活,deactivated()失活。

路由守卫

  • 全局前置路由守卫,初始化,路由每次切换时别调用
router.beforeEach((to, from, next) => {
    if (to.meta.isAuth) {
        //判断权限
        if (localStorage.getItem('token') === 'user')
       //继续路由跳转
        next();
        else alert('undefind token');
    } else next()//取消跳转;
});
  • 全局后置路由守卫,路由跳转完成后被调用的,不会接收next作为参数,所以不能用于阻止路由跳转
router.afterEach((to, from) => {
  // 路由跳转完成后的操作
});
  • 路由独享守卫,可以在某个路由的配置中添加,只有在进入这个特定的路由时才会调用
{
  path: '/mine',
  component: MyComponent,
  beforeEnter: (to, from, next) => {
    // 路由独享守卫逻辑
  }
}
  • 组件内路由守卫,包括beforeRouteEnter,beforeRouteUpdate,beforeRouteLeave,分别在组件即将被渲染,当前路由改变但是组件被复用时,即将离开该组件时调用
export default {
  beforeRouteEnter (to, from, next) {
    // 在渲染该组件的对应路由被确定前调用
    next();
  },
  beforeRouteUpdate (to, from, next) {
    // 当前路由改变,但是该组件被复用时调用
    next();
  },
  beforeRouteLeave (to, from, next) {
    // 导航离开该组件的对应路由时调用
    next();
  }
}

 

 


http://www.kler.cn/a/312901.html

相关文章:

  • C# 项目中配置并使用 `log4net` 来输出日志
  • 【学习笔记】Kylin-Desktop-V10-SP1 麒麟系统知识4——设备设置
  • of 操作函数——获取属性
  • 软件测试(系统测试)的定位和专业:完善产品;专业;非助手;自动化
  • 快速掌握序列化工具:Protobuf Boost.Serialization
  • 可视化建模与UML《顺序图实验报告》
  • 软件设计画图,流程图、甘特图、时间轴图、系统架构图、网络拓扑图、E-R图、思维导图
  • 高速CT滑环的特点分析
  • 在Python中优雅地打开和操作RDS
  • macOS平台(intel)编译MAVSDK安卓平台SO库
  • 《Discriminative Class Tokens for Text-to-Image Diffusion Models》ICCV2023
  • 【GitHub】如何将本地项目推送到GitHub 终端 or IDEA
  • 使用 Docker 容器化 .NET 应用:从进阶到高深
  • 【高分系列卫星简介——高分一号(GF-1)】
  • Spring MVC 启动与请求处理流程解析
  • STM32G431RBT6(蓝桥杯)串口(发送)
  • git使用“保姆级”教程2——初始化及工作机制解释
  • 【加密社】如何分析合约代码
  • Microsoft 365 Copilot: Wave 2 发布,开启AI时代下的全新工作流
  • 代码随想录算法训练营Day5
  • 重回极简:华为如何走向全面智能化?
  • 【C++ Primer Plus习题】16.10
  • MAC 安装 nvm
  • 【SpringCloud】服务注册与发现 - Eureka
  • windows10部署ChatTTS+Apifox调用
  • NAT和代理服务