>  기사  >  웹 프론트엔드  >  최신 음악 플레이어 구축: Vue와 NetEase Cloud API의 황금 조합

최신 음악 플레이어 구축: Vue와 NetEase Cloud API의 황금 조합

王林
王林원래의
2023-07-18 14:21:18607검색

현대 음악 플레이어 구축: Vue와 NetEase Cloud API의 황금 조합

소개:
음악은 우리 삶에서 중요한 역할을 하며, 현대 음악 플레이어를 통해 우리는 언제 어디서나 좋아하는 노래를 들을 수 있습니다. 이 기사에서는 Vue.js 및 NetEase Cloud API를 사용하여 최신 음악 플레이어를 구축하는 방법을 보여줍니다. 이 예제를 통해 Vue.js의 구성 요소화 아이디어와 NetEase Cloud API의 데이터 수집 및 상호 작용을 사용하여 기능이 풍부한 음악 플레이어를 구축하는 방법을 배우게 됩니다.

기술 스택:
시작하기 전에 우리가 사용할 기술 스택을 소개하겠습니다. Vue.js는 구성 요소화 아이디어를 채택한 인기 있는 JavaScript 프레임워크로, 재사용 가능하고 유지 관리가 쉬운 사용자 인터페이스를 쉽게 구축할 수 있습니다. NetEase Cloud API는 노래, 앨범, 가수 및 기타 정보는 물론 음악 재생 및 제어 기능을 포함한 풍부한 음악 데이터를 제공합니다.

프로젝트 준비:
먼저 Vue 프로젝트를 만들어야 합니다. Vue CLI를 사용하여 새 프로젝트를 만들 수 있습니다.

vue create music-player

프로젝트를 만드는 과정에서 필요에 따라 다양한 구성 옵션을 선택할 수 있습니다.

다음으로 필요한 종속성 패키지를 설치해야 합니다. 터미널에서 프로젝트의 루트 디렉터리로 전환하고 다음 명령을 실행합니다.

cd music-player
npm install axios vuex vuex-persist
  • axios는 HTTP 요청을 보내는 데 사용됩니다.
  • vuex는 상태 관리에 사용됩니다.
  • vuex-persist는 이후 상태를 유지하는 데 사용됩니다. 페이지 새로 고침.

프로젝트 구조:
프로젝트 루트 디렉터리에서 다음 디렉터리 구조를 볼 수 있습니다.

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

그 중 public 디렉터리는 정적 리소스를 저장하고 src 디렉터리에는 기본 코드 파일이 포함되어 있습니다.

API 캡슐화:
먼저 api 디렉터리를 만들고 그 안에 index.js 파일을 만듭니다. 이 파일에서는 다른 구성 요소에서 사용할 수 있도록 NetEase Cloud API와의 상호 작용 논리를 캡슐화합니다. 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>

위 코드에서는 axios 라이브러리를 사용하여 NetEase Cloud API와 상호 작용하는 인스턴스를 생성합니다. getSongByIdsearchSongs 메소드를 통해 각각 노래 ID와 키워드를 기반으로 노래 정보를 얻을 수 있습니다.


컴포넌트 디자인:

컴포넌트 디렉토리에서 음악 플레이어를 구성할 몇 가지 핵심 컴포넌트를 생성합니다.

    Player.vue:

    이 구성 요소는 음악 재생 및 제어를 담당합니다.

rrreee

    Playlist.vue:

    이 구성 요소는 현재 재생 목록을 표시하는 역할을 합니다.
    rrreee
  • 다음은 두 가지 기본 구성 요소 예입니다. 실제 프로젝트에서는 필요에 따라 더 많은 구성 요소를 추가할 수 있습니다.
  • Vuex 상태 관리:
  • store 디렉터리에 애플리케이션 상태를 저장하고 관리하는 데 사용되는 index.js라는 파일을 생성합니다.
🎜샘플 코드는 다음과 같습니다. 🎜rrreee🎜여기서 현재 재생 중인 노래, 재생 목록 및 재생 상태를 포함하는 상태 트리를 정의합니다. setCurrentSong, setPlaylisttogglePlayback과 같은 변형 메서드를 통해 상태를 업데이트할 수 있습니다. 🎜🎜애플리케이션 항목:🎜마지막으로 메인 파일 App.vue에 애플리케이션 입구를 작성해야 합니다. 🎜rrreee🎜위 코드에서는 Player 및 Playlist 구성 요소를 App.vue 파일에 도입하고 템플릿에서 사용합니다. 🎜🎜요약:🎜Vue.js와 NetEase Cloud API의 황금 조합을 사용하여 현대적인 음악 플레이어를 성공적으로 구축했습니다. 이 예에서는 API 요청을 캡슐화하고, 구성 요소를 생성하고, 상태 관리 및 기타 기본 기술을 사용하는 방법을 배웠습니다. 물론 재생 진행률 표시줄 추가, 노래 전환 기능 등 이 예제를 확장할 수 있는 다양한 방법이 있습니다. 🎜🎜이 프로젝트를 통해 Vue.js의 컴포넌트화 아이디어와 타사 API 사용 방법을 더 잘 이해하는 데 도움이 되기를 바랍니다. 동시에 독특한 음악 플레이어를 구축하기 위해 실제 프로젝트에서 더 많은 기능과 혁신을 시도하는 것이 좋습니다. 🎜🎜전체 샘플 코드는 GitHub에서 사용할 수 있습니다. 🎜🎜참조 링크:🎜🎜🎜Vue 공식 문서: https://vuejs.org/🎜🎜NetEase Cloud Music API 문서: https://github.com/Binaryify/NeteaseCloudMusicApi🎜🎜

위 내용은 최신 음악 플레이어 구축: Vue와 NetEase Cloud API의 황금 조합의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.