vue-router vue路由模块

SPA 单页面应用 

     所有功能都在一个页面上去(页面加载对应的HTML,css,js)

     每个功能都由模块构成

    用户操作的是不同的模块,页不会出现重新加载或跳转的请况

vue-router 路由模块

   作用:为SPA 实现页面的切换    控制vue组件文件的跳转

   原理   通过不同路径的hash值    控制显示哪些模块

简单的路由

   使用:

         1:安装  :npm i vue-router

         2:在全局中导入并注册

         3: src建立router文件夹 index文件用于配置路由

使用脚手架会自动完成以上动作

配置路由

import 组件名 from ''组件在文件中的路径'

const routes = [
 // 路由的重定向
   {  path:‘ 用户访问的页面的hash   如果要访问是不存在的页面  写*   
      redirect:‘用户跳转的页面的hash’ },
 // 路由配置
  {
    path: '/hash值',  // 对应组件的路径 当浏览器上的 /#/ 这个位置为这个值时显示对应的组件
    name: 'login',    // 对应组件的名字
    component: () => import(/* webpackChunkName: "layout" */ '组件在文件中的路径')
     // 导入组件 (懒加载方法)
    component: 组件名
     // 导入组件  (先导入在设置方法)

     children:[    // 配置当前路由下的子路由
        { path: '/hash值',  
          name: 'login',   
    component: () => import(/* webpackChunkName: "layout" */ '组件在文件中的路径')
      }]
  }]

路由的导入方式具体作用看这里

初始化路由 路由模式

const router = new VueRouter({
  routes,
  mode: 'hash' 
})

 mode :定义路由模式 

     hash模式  路径中带有#  兼容性好

       hash 虽然出现URL中,但不会被包含在HTTP请求中,对后端完全没有影响,因此改变hash           后刷新, 也不会有问题

        原理: hashChange

     history模式  路径中不带有# 兼容性差

     依赖于Html5 的 history api

      刷新时会按照修改后的地址请求后端, 需要后端配置处理, 将地址访问做映射, 否则会404

      原理: popState, history.pushState()

 history模式刷新找不到页面问题处理

发布时由后端解决

路由跳转的实现

 链接式导航

   使用  <router-link to=''> 标签进行跳转  to对应路由的hash值  子路由要在前加父路由

               在页面中 会被渲染为一个 a 标签

   页面会渲染到 <router-view /> 上   

 如果使用组件库可能会使用组件库的跳转方式 

      参数的传递   

           query形式传参    #/hash值 ? 属性1=值1&属性2=值2

           parmas 传参   #/hash值 /参数1/参数2     

           注意如果使用这种形式  要配置路由 path: '/hash值'/:参数名1/参数名2

编程式导航

     this.$router.push('路径 '   或    { path:'路径'  或  name  :   路由规则中的name属性值})

     this.$router.back()   返回上一个页面

     this.$router.replace()   用法与push相同   跳转时会覆盖当前的路由不能返回上一次的页面

  参数的传递  

         query形式传参    #/hash值 ? 属性1=值1&属性2=值2  或  query:{ 参数:值}

          parmas 传参   #/hash值 /参数1/参数2   

路由参数的获取

 通过  this.$route  拿到参数     同一页面下的所有组件都可以获取这个页面路由的参数

    

路由组件的缓存

 路由的跳转,会导致组件的销毁和重建

如果不想组件被销毁

通过keep-alive组件来进行对路由组件进行缓存,

就是在路由跳转时,不去删除组件,而是将组件留在内存中

<keep-alive :include="['组件名1', '组件名2']">
	  <router-view />   // 路由渲染的标签
</keep-alive>

:include 属性 控制要缓存的组件

:exclude属性 不被缓存的组件

组件被缓存后会由两个生命周期钩子函数

activated () {}         //  组件被激活

deactivated () {}     // 组件被缓存

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值