Heim  >  Artikel  >  Web-Frontend  >  Aufbau eines modernen Musikplayers: die goldene Kombination aus Vue und NetEase Cloud API

Aufbau eines modernen Musikplayers: die goldene Kombination aus Vue und NetEase Cloud API

王林
王林Original
2023-07-18 14:21:18625Durchsuche

Aufbau eines modernen Musikplayers: die goldene Kombination aus Vue und NetEase Cloud API

Einführung:
Musik spielt eine wichtige Rolle in unserem Leben und moderne Musikplayer ermöglichen es uns, jederzeit und überall unsere Lieblingslieder zu hören. In diesem Artikel zeigen wir mithilfe von Vue.js und der NetEase Cloud API, wie man einen modernen Musikplayer erstellt. Anhand dieses Beispiels erfahren Sie, wie Sie die Komponentisierungsidee von Vue.js und die Datenerfassung und Interaktion der NetEase Cloud API nutzen, um einen funktionsreichen Musikplayer zu erstellen.

Technologie-Stack:
Bevor wir beginnen, stellen wir den Technologie-Stack vor, den wir verwenden werden. Vue.js ist ein beliebtes JavaScript-Framework, das die Idee der Komponentisierung übernimmt und es uns ermöglicht, auf einfache Weise wiederverwendbare und leicht zu wartende Benutzeroberflächen zu erstellen. Die NetEase Cloud API stellt eine Fülle von Musikdaten bereit, darunter Songs, Alben, Sänger und andere Informationen, sowie Musikwiedergabe- und Steuerungsfunktionen.

Projektvorbereitung:
Zuerst müssen wir ein Vue-Projekt erstellen. Sie können die Vue-CLI verwenden, um ein neues Projekt zu erstellen:

vue create music-player

Während des Erstellungsprozesses des Projekts können Sie je nach Bedarf verschiedene Konfigurationsoptionen auswählen.

Als nächstes müssen wir einige notwendige Abhängigkeitspakete installieren. Wechseln Sie im Terminal in das Stammverzeichnis des Projekts und führen Sie die folgenden Befehle aus:

cd music-player
npm install axios vuex vuex-persist
  • axios wird zum Senden von HTTP-Anfragen verwendet;
  • vuex wird zur Statusverwaltung danach verwendet Seitenaktualisierung.
  • Projektstruktur:
Im Projektstammverzeichnis sehen wir die folgende Verzeichnisstruktur:

├── public
│   ├── index.html
│   └── ...
└── src
    ├── api
    │   └── index.js
    ├── components
    │   ├── Player.vue
    │   ├── Playlist.vue
    │   └── ...
    ├── store
    │   ├── index.js
    │   └── ...
    └── App.vue

Unter diesen speichert das öffentliche Verzeichnis statische Ressourcen, während das src-Verzeichnis unsere Hauptcodedateien enthält.

API-Kapselung:

Erstellen Sie zunächst das Verzeichnis api und darin die Datei index.js. In dieser Datei kapseln wir die Interaktionslogik mit der NetEase Cloud API zur Verwendung in anderen Komponenten.


Der Beispielcode lautet wie folgt: api目录,并在其中创建index.js文件。在该文件中,我们将封装与网易云API的交互逻辑,以便在其他组件中使用。

示例代码如下:

import axios from 'axios';

const BASE_URL = 'https://api.music.com';

const api = axios.create({
  baseURL: BASE_URL
});

export const getSongById = async (id) => {
  try {
    const response = await api.get('/song', { params: { id } });
    return response.data;
  } catch (error) {
    console.error(error);
  }
};

export const searchSongs = async (keyword) => {
  try {
    const response = await api.get('/search', { params: { keyword } });
    return response.data;
  } catch (error) {
    console.error(error);
  }
};

// 更多API封装...

在上述代码中,我们使用axios库创建了一个与网易云API交互的实例。通过getSongByIdsearchSongs方法,我们可以分别根据歌曲ID和关键字来获取歌曲信息。

组件设计:
components目录中,我们将创建几个核心组件,它们将构成我们的音乐播放器。

  1. Player.vue:
    该组件负责播放与控制音乐。
<template>
  <div class="player">
    <!-- 播放/暂停按钮 -->
    <button @click="togglePlayback">{{ isPlaying ? '暂停' : '播放' }}</button>

    <!-- 歌曲封面 -->
    <img :src="currentSong.cover" alt="Song Cover" />

    <!-- 歌曲信息 -->
    <div class="song-info">
      <h2>{{ currentSong.name }}</h2>
      <p>{{ currentSong.artist }}</p>
    </div>
  </div>
</template>

<script>
import { mapState, mapActions } from 'vuex';

export default {
  computed: {
    ...mapState(['currentSong', 'isPlaying'])
  },
  methods: {
    ...mapActions(['togglePlayback'])
  }
};
</script>
  1. Playlist.vue:
    该组件负责展示当前播放列表。
<template>
  <ul class="playlist">
    <li v-for="song in playlist" :key="song.id">
      <p>{{ song.name }}</p>
      <p>{{ song.artist }}</p>
    </li>
  </ul>
</template>

<script>
import { mapState } from 'vuex';

export default {
  computed: {
    ...mapState(['playlist'])
  }
};
</script>

这是两个基本的组件示例,在实际项目中,你可以根据需求添加更多的组件。

Vuex状态管理:
store目录中,我们将创建一个名为index.js的文件,该文件将用于存储和管理应用程序的状态。

示例代码如下:

import Vue from 'vue';
import Vuex from 'vuex';
import createPersistedState from 'vuex-persistedstate';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    currentSong: null,
    playlist: [],
    isPlaying: false
  },
  mutations: {
    setCurrentSong(state, song) {
      state.currentSong = song;
    },
    setPlaylist(state, playlist) {
      state.playlist = playlist;
    },
    togglePlayback(state) {
      state.isPlaying = !state.isPlaying;
    }
  },
  plugins: [createPersistedState()]
});

在这里,我们定义了一个状态树,其中包括当前播放的歌曲、播放列表和播放状态。通过setCurrentSongsetPlaylisttogglePlayback等mutations方法,我们可以更新状态。

应用入口:
最后,我们需要在主文件App.vue

<template>
  <div id="app">
    <Player />
    <Playlist />
  </div>
</template>

<script>
import Player from './components/Player.vue';
import Playlist from './components/Playlist.vue';

export default {
  components: {
    Player,
    Playlist
  }
};
</script>

Im obigen Code verwenden wir die Axios-Bibliothek, um eine Instanz zu erstellen, die mit der NetEase Cloud API interagiert. Mit den Methoden getSongById und searchSongs können wir Songinformationen basierend auf der Song-ID bzw. den Schlüsselwörtern erhalten.

Komponentendesign:

Im Verzeichnis components erstellen wir mehrere Kernkomponenten, aus denen unser Musikplayer besteht.

    Player.vue:

    Diese Komponente ist für die Wiedergabe und Steuerung von Musik verantwortlich.

rrreee

    Playlist.vue:

    Diese Komponente ist für die Anzeige der aktuellen Playlist verantwortlich.

rrreeeDies sind zwei grundlegende Komponentenbeispiele. In tatsächlichen Projekten können Sie je nach Bedarf weitere Komponenten hinzufügen.
  • Vuex-Statusverwaltung:
  • Im Verzeichnis store erstellen wir eine Datei namens index.js, die zum Speichern und Verwalten des Status der Anwendung verwendet wird.
  • Der Beispielcode lautet wie folgt:
rrreee🎜Hier definieren wir einen Zustandsbaum, der den aktuell abgespielten Song, die Playlist und den Wiedergabestatus enthält. Wir können den Status durch Mutationsmethoden wie setCurrentSong, setPlaylist und togglePlayback aktualisieren. 🎜🎜Anwendungseintrag:🎜Zuletzt müssen wir den Anwendungseingang in die Hauptdatei App.vue schreiben. 🎜rrreee🎜Im obigen Code führen wir die Player- und Playlist-Komponenten in die App.vue-Datei ein und verwenden sie in der Vorlage. 🎜🎜Zusammenfassung:🎜Durch die Verwendung der goldenen Kombination von Vue.js und NetEase Cloud API haben wir erfolgreich einen modernen Musikplayer entwickelt. In diesem Beispiel haben wir gelernt, wie man API-Anfragen kapselt, Komponenten erstellt, die Statusverwaltung und andere grundlegende Technologien verwendet. Natürlich gibt es viele Möglichkeiten, dieses Beispiel zu erweitern, z. B. das Hinzufügen eines Wiedergabefortschrittsbalkens, Funktionen zum Umschalten von Songs usw. 🎜🎜Ich hoffe, dass Ihnen dieses Projekt dabei helfen kann, die Komponentisierungsidee von Vue.js und die Methode zur Verwendung von APIs von Drittanbietern besser zu verstehen. Gleichzeitig werden Sie ermutigt, weitere Funktionen und Innovationen in konkreten Projekten auszuprobieren, um einen einzigartigen Musikplayer zu entwickeln. 🎜🎜Der vollständige Beispielcode ist auf GitHub verfügbar. 🎜🎜Referenzlink:🎜🎜🎜Offizielle Vue-Dokumentation: https://vuejs.org/🎜🎜NetEase Cloud Music API-Dokumentation: https://github.com/Binaryify/NeteaseCloudMusicApi🎜🎜

Das obige ist der detaillierte Inhalt vonAufbau eines modernen Musikplayers: die goldene Kombination aus Vue und NetEase Cloud API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn