这个组件包含了一个音频标签和三个按钮,分别用于播映、暂停和切换歌曲。在setup函数中定义了当时播映的歌曲、播映、暂停和切换歌曲的办法。

<template>
  <div>
    <audio ref="audioTag" :src="currentSong.url"></audio>
    <button @click="play">Play</button>
    <button @click="pause">Pause</button>
    <button @click="nextSong">Next Song</button>
  </div>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue';
interface Song {
  name: string;
  url: string;
}
export default defineComponent({
  setup() {
    const audioTag = ref<null | HTMLAudioElement>(null);
    const songs: Song[] = [
      { name: 'Song1', url: 'http://example.com/song1.mp3' },
      { name: 'Song2', url: 'http://example.com/song2.mp3' },
    ];
    let currentSongIndex = 0;
    const play = () => {
      if (audioTag.value) {
        audioTag.value.play();
      }
    };
    const pause = () => {
      if (audioTag.value) {
        audioTag.value.pause();
      }
    };
    const nextSong = () => {
      currentSongIndex = (currentSongIndex + 1) % songs.length;
      if (audioTag.value) {
        audioTag.value.src = songs[currentSongIndex].url;
        audioTag.value.play();
      }
    };
    return {
      currentSong: songs[currentSongIndex],
      play,
      pause,
      nextSong,
    };
  },
});
</script>

最后,在App.vue中使用这个音乐播映器组件:


<template>
  <div id="app">
    <MusicPlayer />
  </div>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import MusicPlayer from './components/MusicPlayer.vue';
export default defineComponent({
  components: {
    MusicPlayer,
  },
});
</script>