vue3中實(shí)現(xiàn)音頻播放器APlayer的方法
前言:
vue2的時(shí)候,分享了一個(gè)很好用的插件是vue-aplayer,但是他是不支持vue3的,這里分享vue3使用APlayer來實(shí)現(xiàn)一個(gè)播放器的方法。 實(shí)現(xiàn)效果:
官方:
git地址:點(diǎn)我
api地址:點(diǎn)我
實(shí)現(xiàn)步驟:
1、安裝 npm:
npm install aplayer --save
Yarn:
yarn add aplayer
2、頁面中引入
import APlayer from 'APlayer'; import 'APlayer/dist/APlayer.min.css';
3、具體使用,源代碼
(1)封裝 aPlayer.vue
<template> <div class="mainPage" ref="playerRef"></div> </template> <script setup> import APlayer from 'APlayer'; import 'APlayer/dist/APlayer.min.css'; import {reactive,nextTick, onBeforeUnmount,getCurrentInstance, onMounted, ref} from 'vue' const playerRef = ref() const { proxy } = getCurrentInstance() const state = reactive({ instance:null }) // APlayer歌曲信息 class Audio { // 音頻藝術(shù)家 // artist: String; // 音頻名稱 // name: String; // 音頻鏈接 // url: String; // 音頻封面 // cover: String; // 歌詞 // lrc: String; constructor(artist, name, url, cover, lrc) { this.artist = artist; this.name = name; this.url = url; this.cover = cover; this.lrc = lrc; } } const props = defineProps({ // 開啟吸底模式 fixed: { type: Boolean, default: false }, // 開啟迷你模式 mini: { type: Boolean, default: false }, // 音頻自動播放 autoplay: { type: Boolean, default: false }, // 主題色 theme: { type: String, default: 'rgba(255,255,255,0.2)' }, // 音頻循環(huán)播放 loop: { type: String, default: 'all' //'all' | 'one' | 'none' }, // 音頻循環(huán)順序 order: { type: String, default: 'random' //'list' | 'random' }, // 預(yù)加載 preload: { type: String, default: 'auto' //'auto' | 'metadata' | 'none' }, // 默認(rèn)音量 volume: { type: Number, default: 0.7, validator: (value) => { return value >= 0 && value <= 1; } }, // 歌曲服務(wù)器(netease-網(wǎng)易云, tencent-qq音樂, kugou-酷狗, xiami-小米音樂, baidu-百度音樂) songServer: { type: String, default: 'netease' //'netease' | 'tencent' | 'kugou' | 'xiami' | 'baidu' }, // 播放類型(song-歌曲, playlist-播放列表, album-專輯, search-搜索, artist-藝術(shù)家) songType: { type: String, default: 'playlist' }, // 歌的id songId: { type: String, default: '19723756' }, // 互斥,阻止多個(gè)播放器同時(shí)播放,當(dāng)前播放器播放時(shí)暫停其他播放器 mutex: { type: Boolean, default: true }, // 傳遞歌詞方式 lrcType: { type: Number, default: 3 }, // 列表是否默認(rèn)折疊 listFolded: { type: Boolean, default: true }, // 列表最大高度 listMaxHeight: { type: String, default: '100px' }, // 存儲播放器設(shè)置的 localStorage key storageName: { type: String, default: 'aplayer-setting' } }) onMounted(() => { let str = { server:props.songServer, type:props.songType, id:props.songId } proxy.$api.common.getSongSheet(str).then(res=>{ let audioList = res.data.map(value => new Audio(value.author, value.title, value.url, value.pic, value.lrc)); state.instance = new APlayer({ container: playerRef.value, fixed: props.fixed, mini: props.mini, autoplay: props.autoplay, theme: props.theme, loop: props.loop, order: props.order, preload: props.preload, volume: props.volume, mutex: props.mutex, lrcType: props.lrcType, listFolded: props.listFolded, listMaxHeight: props.listMaxHeight, storageName: props.storageName, audio: audioList }) }) // 銷毀 onBeforeUnmount(() => { state.instance.destroy() }) }) </script> <style lang='scss' scoped> .mainPage{ @include wh(100%,auto); background: #FCFCFC; border: 1px solid #E0E0E0; border-radius: 4px; } </style>
(2)父組件調(diào)用
<a-player></a-player>
其他:
vue3+ts+aplayer版本:點(diǎn)我
到此這篇關(guān)于vue3中實(shí)現(xiàn)音頻播放器APlayer的文章就介紹到這了,更多相關(guān)vue3音頻播放器APlayer內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
手把手教你如何創(chuàng)建一個(gè)VUE項(xiàng)目(超簡單)
這篇文章主要給大家介紹了關(guān)于如何創(chuàng)建一個(gè)VUE項(xiàng)目的相關(guān)資料,創(chuàng)建vue項(xiàng)目有很多種方式,這里給大家介紹一種非常簡單的方法,需要的朋友可以參考下2023-08-08Vue數(shù)據(jù)驅(qū)動表單渲染,輕松搞定form表單
這篇文章主要介紹了Vue數(shù)據(jù)驅(qū)動表單渲染,輕松搞定form表單,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07vue2.0設(shè)置proxyTable使用axios進(jìn)行跨域請求的方法
這篇文章主要介紹了vue2.0設(shè)置proxyTable使用axios進(jìn)行跨域請求,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10vue實(shí)現(xiàn)圖片加載完成前的loading組件方法
下面小編就為大家分享一篇vue實(shí)現(xiàn)圖片加載完成前的loading組件,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02Vue處理循環(huán)數(shù)據(jù)流程示例精講
這篇文章主要介紹了Vue處理循環(huán)數(shù)據(jù)流程,這個(gè)又是一個(gè)編程語言,?模版語法里面必不可少的一個(gè),?也是使用業(yè)務(wù)場景使用最多的一個(gè)環(huán)節(jié)。所以學(xué)會使用循環(huán)也是重中之重了2023-04-04