用Vue实现音乐播放器

一、项目简介

Vue音乐播放器是一个基于Vue.js和Webpack构建的开源播放器项目。该项目实现了音乐歌曲的在线播放、列表循环、歌词同步显示等多种功能。该项目的启动和运行十分简单,只需几个简单的命令即可在本地搭建一个完整的音乐播放器系统。此外,该项目还可以方便地扩展和定制,可以满足不同用户的个性化需求。

二、安装和配置

1、安装依赖

npm install

2、配置环境变量

在.env文件中修改以下配置:

VUE_APP_BASE_API=/api # 接口地址 
VUE_APP_MUSIC_API=/music # 音乐资源地址

三、实现功能

1、音乐播放

通过Vue.js的生命周期函数和第三方插件完成音乐播放功能。在网页加载完成后,使用Vue-resource插件异步获取歌曲资源并进行音乐播放。播放页面的组件化设计轻松实现了歌曲播放页的编写和拓展。该项目还实现了歌曲的暂停、切换和拖拽等多种操作,提高了用户体验度。


// 在Vue模板中使用audio标签实现音乐播放
<audio ref="audioControl" @timeupdate="handleTimeupdate">
    <source :src="currentSong.url">
</audio>

// Vue.js的生命周期函数使用Vue-resource插件异步获取歌曲资源
created() {
    this.$http.get(this.$api.getUrl('/song/url'), {
        params: { id: this.currentSong.id }
    }).then(res => {
        if (res.data['data'][0].url !== null) {
            this.currentSong.url = res.data['data'][0].url
            this.$store.commit('setCurrentSong', this.currentSong)
            this.$refs.audioControl.play()
        }
    })
},

2、歌曲列表

通过使用Vue-router插件组件化的设计,可以轻松实现歌曲列表的拓展和查看。每次加载列表时,都会进行异步获取数据的请求。通过包括歌曲名称、歌手、专辑、时长等多种显示方式来提高用户体验。各种操作按钮如添加、删除、播放等操作的实现,增强了系统的可用性和灵活性。


// 获取歌曲列表数据
this.$http.get(this.$api.getUrl('/playlist/detail'), {
    params: { id: this.playlistId }
}).then(res => {
    this.songs = this.formatSongs(res.data.playlist.tracks)
    ...
})

// 列表展示歌曲信息
<tr v-for="(item, index) in songs">
    <td><span class="item-number">{{ index + 1 }}</span></td>
    <td><span class="item-name" @click="handlePlay(item)">{{ item.name }}</span></td>
    <td><span class="item-singer">{{ item.singer }}</span></td>
    <td><span class="item-album">{{ item.album }}</span></td>
    <td><span class="item-time">{{ item.time }}</span></td>
    <td><span class="item-operate">
        <i class="iconfont icon-shanchu" @click="handleDelete(item)"></i>
    </span></td>
</tr>

3、音乐搜索

使用Vue组件化的思想,通过异步Ajax请求并对数据进行处理,实现音乐搜索的高效和准确。通过对歌曲名、歌手等信息的搜索,方便愉快的获取自己所喜欢的音乐。


// 发送异步请求获取搜索结果
this.$http.get(this.$api.getUrl('/search/suggest'), {
    params: { keywords: this.query }
}).then(res => {
    this.suggestList = res.data.result.allMatch
    ...
})

// 列表展示搜索结果
<li v-for="item in suggestList" @click="handleSelect(item.keyword)">{{ item.keyword }}</li>

4、歌曲歌词

该项目使用Vue.js提供的指令创造了字面意义上的双向绑定,根据当前歌曲播放时间显示相应的歌词。歌词样式优美而稳定,保证了用户使用的体验。


// 获取歌曲歌词
this.$http.get(this.$api.getUrl('/lyric'), {
    params: { id: this.currentSong.id }
}).then(res => {
    if (res.data.lrc) {
        this.oriLyric = res.data.lrc.lyric
        this.lyricObj = this.parseLyric(this.oriLyric)
        ...
    }
})

// 段落输出歌词内容,判断当前播放时间和歌曲歌词时间是否相等,达到同步效果
<p :class="{ 'lyric-current': isActive(index) }" v-for="(line, index) in lyricList">
    {{ line.text }}
</p>

四、总结

该音乐播放器项目从多个方面实现了音乐播放的需求,通过Vue组件化思想的运用优化了用户体验,使整个项目具有更强的可维护性和拓展性。同时,该项目也涵盖了项目开发中重要步骤的实现(如网络请求、数据解析、组件化开发),适合初学者进行学习和实践。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/252224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-13 17:34
下一篇 2024-12-13 17:34

相关推荐

  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • 为什么大家都用网易云音乐?

    大家都用网易云音乐,这是因为它凭借其强大而便捷的功能,以及巨大的歌曲资源库,成为了广大音乐爱好者的首选音乐平台。 一、功能强大而便捷 相较于其他的音乐平台,网易云音乐提供了许多强大…

    编程 2025-04-28
  • Vue3的vue-resource使用教程

    本文将从以下几个方面详细阐述Vue3如何使用vue-resource。 一、安装Vue3和vue-resource 在使用vue-resource前,我们需要先安装Vue3和vue…

    编程 2025-04-27
  • ThinkPHP6 + Vue.js: 不使用Fetch的数据请求方法

    本文将介绍如何在ThinkPHP6和Vue.js中进行数据请求,同时避免使用Fetch函数。 一、AJAX:XMLHttpRequest的基础使用 在进行数据请求时,最基础的方式就…

    编程 2025-04-27
  • Vue模拟按键按下

    本文将从以下几个方面对Vue模拟按键按下进行详细阐述: 一、Vue 模拟按键按下的场景 在前端开发中,我们常常需要模拟按键按下的场景,比如在表单中填写内容后,按下“回车键”提交表单…

    编程 2025-04-27
  • 开发前端程序,Vue是否足够?

    Vue是一个轻量级,高效,渐进式的JavaScript框架,用于构建Web界面。开发人员可以使用Vue轻松完成前端编程,开发响应式应用程序。然而,当涉及到需要更大的生态系统,或利用…

    编程 2025-04-27
  • 如何在Vue中点击清除SetInterval

    在Vue中点击清除SetInterval是常见的需求之一。本文将介绍如何在Vue中进行这个操作。 一、使用setInterval和clearInterval 在Vue中,使用set…

    编程 2025-04-27
  • VueClearable:实现易于清除的Vue输入框

    一、VueClearable基本介绍 VueClearable是一个基于Vue.js开发的易于清除的输入框组件,可以在输入框中添加“清除”按钮,使得用户可以一键清空已输入内容,提升…

    编程 2025-04-25
  • Vue 往数组添加字母key

    本文将详细阐述如何在 Vue 中往数组中添加字母 key,并从多个方面探讨实现方法。 一、Vue 中添加字母 key 的实现方法 在 Vue 中,添加 key 可以使用 v-bin…

    编程 2025-04-25

发表回复

登录后才能评论