vue 解决路由切换 网页音乐播放器继续播放音乐问题(模仿pjax 原理,解决个人网站局部刷新问题)

1.思路

  • vue 缓存 加 局部刷新 ,起到路由切换时,内容发生改变但是不刷新界面,从而实现网页音乐播放器一直播放同一首歌,而不是随着页面刷新停止播放,

2 解决步骤

  • vue 实现缓存(keep-alive)
  • 首先是路由设置
// 在路由的 meta属性中设置keepAlive:true
export default new Router({
  routes: [
    {path: '/', name: 'homePage', component: homePage, meta: {title: '无心|心做し',keepAlive:true},},
    {path: '/login', name: 'login', component:login,meta:{title: '无心|心做し',keepAlive:true}},
    {path: '/moodEssay', name: 'moodEssay', component:moodEssay,meta:{title: '无心|心做し',keepAlive:true}},
    {path: '/messageBoard', name: 'messageBoard', component:messageBoard,meta:{title: '无心|心做し',keepAlive:true}},
    {path: '/pigeonholeManagement', name: 'pigeonholeManagement', component: pigeonholeManagement,meta:{title: '无心|心做し',keepAlive:true}},
  ],
})

  • 第二是在app.vue界面 设置局部刷新函数
<template>
  <keep-alive>
    <div id="app">
    // 将路由 交给keep-alive 来管理
      <keep-alive><router-view :key="key" v-if="isRouterAlive"/></keep-alive>
      <headerNav v-show="$route.name!=='login'"></headerNav>
    </div>
  </keep-alive>
</template>

配置局部刷新函数
 provide(){
      return{
        reload:this.reload
      }
    },

   data(){
      return{
        isRouterAlive:true
      }
    },

  methods:{
      reload(){
        this.isRouterAlive = false;
        this.$nextTick(function () {
          this.isRouterAlive = true;
        })
      }
    }

// 接下来就是使用了
监听路由跳转 用局部刷新来进行页面路由跳转
  watch: {
      '$route' (to, from) {
        this.reload();
      }
    },

3.效果图

  • 路由跳转前在这里插入图片描述

  • 路由跳转后在这里插入图片描述
    -看看浏览器控制台 elment
    在 这样处理后 路透跳转的时候

在这里插入图片描述

  • 如果只是简单的路由跳转
  • boday下的 <div id =’‘app’’>(也就是vue挂载的div容器会先销毁,然后在重新创建,这样一来页面音乐播放器自然会停止播放了)

4.个人体会(不对勿喷)

  • vue路由跳转页面:销毁 容器 然后创建容器,重新加载页面(加载数据),渲染容器,实现数据刷新
  • vue 缓存+局部刷新:通过keep-alive 去缓存里读取数据,局部刷新就是将缓存中读来的数据重新渲染容器,所以整个过程容器一直存在,这就实现了数据更新,但是页面没有进行刷新
  • 前者通过容器的创建 销毁 重新读取数据 加载,渲染 实现 界面刷新
  • 后者通过容器的内容局部更新(从缓存中读取需要跟新的数据),实现 界能面刷新
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值