• 路由的配置及基本使用(多级路由,命名路由,parms参数query参数,编程式路由导航,缓存路由组件,路由守卫,路由的两种工作模式)


    一、路由的概念及配置

    路由(route):一个路由就是一组映射关系,多个路由由路由器(router)进行管理。

    路由器的作用 :路由负责为数据包选择转发路劲。

    1.1路由的安装和配置

    (1)安装:npm i vue-router

    (2)应用插件:Vue.use(VueRouter)

    (3)编写router配置项:

    1. //引入路由
    2. import VueRouter form 'vue-router'
    3. //引入路由组件
    4. //创建一路由实例,去管理一组一组的路由归责
    5. const router = new VueRouter({
    6. routers:[
    7. {
    8. path:'/路径名'
    9. component:'引用的组件名'
    10. }
    11. ]
    12. })
    13. export default router //暴露路由对象。

    (4)在main.js中引入VueRouter 和router

    (5)并且在vue实例中配置router

    1. //引入Vue
    2. import Vue from 'vue'
    3. //引入App
    4. import App from './App.vue'
    5. //引入VueRouter
    6. import VueRouter from 'vue-router'
    7. //引入路由器
    8. import router from './router'
    9. //关闭Vue的生产提示
    10. Vue.config.productionTip = false
    11. //应用插件
    12. Vue.use(VueRouter)
    13. //创建vm
    14. new Vue({
    15. el:'#app',
    16. render: h => h(App),
    17. router:router
    18. })

    二、多级路由和路由的命名

    使用children:[]配置子级路由,使用name:’‘属性来定义路由的名字

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

    三、parms参数和query参数

    3.1parms参数路径之后/参数1/参数2

    需要在路由的path路径中写参数占位

    1. routers:[
    2. {
    3. path:'/路径名/:参数名/:参数名2'
    4. }
    5. ]

     在组件模板中传送参数

    		

    在组件模板中使用参数

     

  • 消息编号:{{$route.params.id}}
  • query参数在路径之后?键值对   对象书写法

    1. "{
    2. name:'xiangqing', //入股喔屎parms参数使用对象写法,这个地方一定要路由的name
    3. query:{
    4. id:m.id,
    5. title:m.title
    6. }
    7. }">

    四、编程式路由导航

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

    1. //写在组件内部的methods方法中
    2. methods:{
    3. tiaozhuan(){
    4. //$router的两个API
    5. this.$router.push({
    6. name:'xiangqing',
    7. params:{
    8. id:xxx,
    9. title:xxx
    10. }
    11. })
    12. }
    13. tiaozhuan_tidai(){
    14. this.$router.replace({
    15. name:'xiangqing',
    16. params:{
    17. id:xxx,
    18. title:xxx
    19. }
    20. })
    21. }
    22. //点击前进一个历史路径
    23. qianjin(){
    24. this.$router.forward() //前进
    25. }
    26. houtui(){
    27. this.$router.back() //后退
    28. }
    29. qianjin_houtui(){
    30. this.$router.go() //可前进也可后退
    31. }
    32. }

     五、路由缓存组件

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

    1. "News"> //缓存路由组件 include中的值是,组件的名字,保持某个路由组件不被销毁,如果要保持多个include写成数组的形式:include =“['组件名','组件名']”
    2. <router-view>router-view>

    六、路由守卫

    6.1全局路由路由守卫

     写在路由配置文件当中

    router.beforeEach(to,from,next){}  完成进入组件之前

    router.afterEach(to,form){}完成进入组件后

    6.2独享路由守卫

     写在目标路由中间

    beforeEnter(to,form,next){}进入组件之前

    6.3组件路由守卫

    写在组件中

    beforeRouteEnter(){} 进入组件之前R

    beforeRouteLeave(){}离开组件之后

    七、路由器的两种工作模式

    1. 对于一个url来说,什么是hash值?—— #及其后面的内容就是hash值。

    2. hash值不会包含在 HTTP 请求中,即:hash值不会带给服务器。

    3. hash模式:

      1. 地址中永远带着#号,不美观 。

      2. 若以后将地址通过第三方手机app分享,若app校验严格,则地址会被标记为不合法。

      3. 兼容性较好。

    4. history模式:

      1. 地址干净,美观 。

      2. 兼容性和hash模式相比略差。

      3. 应用部署上线时需要后端人员支持,解决刷新页面服务端404的问题。

  • 相关阅读:
    系统架构师备考倒计时19天(每日知识点)
    一篇博客带你学会MyBatis
    java计算机毕业设计基于安卓Android/微信小程序的计算机等级考试考练APP
    Java实现拼图小游戏
    Avalonia 中的样式和控件主题
    【MySQL篇】第三篇——表的操作
    一座 “数智桥梁”,华为助力“天堑变通途”
    【牛客刷题】——Python入门 07 循环语句(下)
    什么是JMM
    Python 二分查找
  • 原文地址:https://blog.csdn.net/m0_61973028/article/details/127640376