當前位置:首頁 » 硬碟大全 » vue循環播放緩存視頻
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

vue循環播放緩存視頻

發布時間: 2023-01-24 14:23:54

⑴ vue 騰訊雲點播播放視頻(循環)

<template>

<div>

<div v-for="(item,index) in dataList" :key="index" style="margin-bottom: 11px;">

<video v-if="showFlag" :id="'tcPlayer' + index" preload="auto" width="640" height="368" playsinline

webkit-playsinline x5-playsinline></video>

</div>

</div>

</template>

<script>

export default {

name: 'Detail',

data() {

return {

tcPlayerId: 'tcPlayer' + Date.now(),

player: null,

showFlag: false,

videoFileid: '',

videoAppid: '',

dataList: []

}

},

mounted() {

let self = this

setTimeout(() => {

self.dataList = [{

fileID: '2222222',

appID: '11111',

psign: "ccccccc"

},

{

fileID: '2222222',

appID: '11111',

psign: "cccccccc"

},

]

self.showFlag = true

self.$nextTick(() => {

self.dataList.forEach((value, index) => {

self.getVideoLang(value.fileID, value.appID, value.psign, 'tcPlayer' + index)

})

})

}, 1000)

},

methods: {

// 初始化騰訊雲播放器

getVideoLang(fileID, appID, psign, id) {

const playerParam = {

fileID: fileID,

appID: appID,

psign

}

window.TCPlayer(id, playerParam)

}

}

}

</script>

<style lang="scss">

@import "https://imgcache.qq.com/open/qcloud/video/tcplayer/tcplayer.css"

</style>

// 解決第一次進入視頻不載入問題

beforeDestroy () {

  this.player.dispose()

},

⑵ vue頁面緩存(keepAlive)

同人博客搬遷~~~~(播客主頁: https://www.cnblogs.com/epines/ )

頁面緩存在頁面中長期會使用到,可以更快速的在頁面切換期間的資源獲取

主要是用keep-alive實現

在vue項目中,相關的寫法比較多,還有一些注意點需要仔細

第一種方式

在App.vue中

添加標簽

  <keep-alive>

      <router-view />

  </keep-alive>

這會就是所有的頁面都會被緩存

這里做了兩個頁面的相互跳轉,分別寫了一個輸入框,在輸入內容後,跳轉時,輸入的內容因為緩存的原因會被保留

 如果存在某些頁面需要緩存,那麼可以通過keep-alive的屬性去處理

其中就是include和exclude

include:名稱匹配的組件才會被緩存,其中可以寫字元串或正則表達式

exclude:名稱匹配的組件不會被緩存,其中同樣是字元串或正則表達式

這里的名稱是指組件的名稱

<script>

export default {

  name: 'HelloWorld'

}

</script>

     第二種方式:

     在路由中進行設置通過添加meta,route/index.js     

export default new Router({

  routes: [{

      path: '/',

      name: 'HelloWorld',

      component: HelloWorld,

      meta: {

        keepAlive: true // 該路由會被緩存

      }

    },

    {

      path: '/ss',

      name: 'ss',

      component: Ss,

meta: {        keepAlive:false // 該路由不會被緩存,不需要緩存的時候該屬性可以不用寫      }

}]

})

這時候頁面還需要通過該屬性進行判斷是否緩存

在App.vue  

  <keep-alive>

      <router-view v-if="$route.meta.keepAlive">

      </router-view>

    </keep-alive>

    <router-view v-if="!$route.meta.keepAlive">

    </router-view>

這樣寫有個優點就是,需要緩存不需要緩存的name可以隨便寫,不需要做什麼規律性的去寫出一個合適的正則去匹配上,就會更加靈活些

 常見的應用場景可以是,列表到詳情頁,從詳情頁返回到列表頁,如果說列表頁沒有做緩存,在單頁面下,會直接返回列表首頁(存在分頁的情況),就不能直接返回至之前離開的列表頁,所以這個地方在列表頁添加頁面緩存後,可以做到返回至之前離開的列表頁

 沒有緩存的時候,返回列表:

 有緩存的時候,返回列表

所以從某些程度上來講,即增加了頁面的響應速度,又增加了用戶體驗,總體來說,還是比較實用的