• VUE快速入门-5


    综合应用

    在这里插入图片描述

    audio标签的play事件会在音频播放的时候触发

    audio标签的pause事件会在音频暂停的时候触发

    DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <meta http-equiv="X-UA-Compatible" content="ie=edge" />
      <title>Documenttitle>
      
      <link rel="stylesheet" href="./css/index.css">
    head>
    
    <body>
      <div class="wrap">
        <div class="play_wrap" id="player">
          <div class="search_bar">
            <img src="images/player_title.png" alt="" />
            
            <input type="text" autocomplete="off" v-model='query' @keyup.enter="searchMusic();" />
          div>
          <div class="center_con">
            
            <div class='song_wrapper' ref='song_wrapper'>
              <ul class="song_list">
                <li v-for="item in musicList">
                  
                  <a href="javascript:;" @click='playMusic(item.id)'>a>
                  <b>{{item.name}}b>
                  <span>
                    <i @click="playMv(item.mvid)" v-if="item.mvid!=0">i>
                  span>
                li>
    
              ul>
              <img src="images/line.png" class="switch_btn" alt="">
            div>
            
            <div class="player_con" :class="{playing:isPlay}">
              <img src="images/player_bar.png" class="play_bar" />
              
              <img src="images/disc.png" class="disc autoRotate" />
              <img :src="coverUrl==''?'./images/cover.png':coverUrl" class="cover autoRotate" />
            div>
            
            <div class="comment_wrapper" ref='comment_wrapper'>
              <h5 class='title'>热门留言h5>
              <div class='comment_list'>
    
                <dl v-for="item in hotComments">
                  <dt>
                    <img :src="item.user.avatarUrl" alt="" />
                  dt>
                  <dd class="name">{{item.user.nickname}}dd>
                  <dd class="detail">
                    {{item.content}}
                  dd>
                dl>
              div>
              <img src="images/line.png" class="right_line">
            div>
          div>
          <div class="audio_con">
            <audio ref='audio' @play="play" @pause="pause" :src="musicUrl" controls autoplay loop class="myaudio">audio>
          div>
          <div class="video_con" v-show="showVideo">
            <video ref='video' :src="mvUrl" controls="controls">video>
            <div class="mask" @click="closeMv">div>
          div>
        div>
      div>
      
      <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
      
      <script src="https://unpkg.com/axios/dist/axios.min.js">script>
      <script type="text/javascript">
        // 设置axios的基地址
        axios.defaults.baseURL = 'https://autumnfish.cn';
        // axios.defaults.baseURL = 'http://localhost:3000';
    
    
    
        // 实例化vue
        var app = new Vue({
          el: "#player",
          data: {
            // 搜索关键字
            query: '',
            // 歌曲列表
            musicList: [],
            // 歌曲url
            musicUrl: '',
            // 是否正在播放
            isPlay: false,
            // 歌曲热门评论
            hotComments: [],
            // 歌曲封面地址
            coverUrl: '',
            // 显示视频播放
            showVideo: false,
            // mv地址
            mvUrl: ''
          },
          // 方法
          methods: {
            // 搜索歌曲
            searchMusic() {
              if (this.query == 0) {
                return
              }
              axios.get('/search?keywords=' + this.query).then(response => {
                // 保存内容
                this.musicList = response.data.result.songs;
    
              })
    
              // 清空搜索
              this.query = ''
            },
            // 播放歌曲
            playMusic(musicId) {
              // 获取歌曲url
              axios.get('/song/url?id=' + musicId).then(response => {
                // 保存歌曲url地址
                this.musicUrl = response.data.data[0].url
              })
              // 获取歌曲热门评论
              axios.get('/comment/hot?type=0&id=' + musicId).then(response => {
                // console.log(response)
                // 保存热门评论
                this.hotComments = response.data.hotComments
    
              })
              // 获取歌曲封面
              axios.get('/song/detail?ids=' + musicId).then(response => {
                // console.log(response)
                // 设置封面
                this.coverUrl = response.data.songs[0].al.picUrl
              })
    
            },
            // audio的play事件
            play() {
              this.isPlay = true
              // 清空mv的信息
              this.mvUrl = ''
            },
            // audio的pause事件
            pause() {
              this.isPlay = false
            },
            // 播放mv
            playMv(vid) {
              if (vid) {
                this.showVideo = true;
                // 获取mv信息
                axios.get('/mv/url?id=' + vid).then(response => {
                  // console.log(response)
                  // 暂停歌曲播放
                  this.$refs.audio.pause()
                  // 获取mv地址
                  this.mvUrl = response.data.data.url
                })
              }
            },
            // 关闭mv界面
            closeMv() {
              this.showVideo = false
              this.$refs.video.pause()
            },
            // 搜索历史记录中的歌曲
            historySearch(history) {
              this.query = history
              this.searchMusic()
              this.showHistory = false;
            }
          },
    
        })
    
      script>
    body>
    
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183

    源码下载

  • 相关阅读:
    Helloworld 驱动模块加载
    2024hw蓝队面试题--6
    JVM调优工具使用手册
    c++P1462 通往奥格瑞玛的道路(acwing版)
    2023人工智能十大关键词“Agent”智能体,继ChatGPT后成最热AI焦点
    三、循环语句
    mac跑分工具Geekbench v6.2.1
    Python机器学习16——相关向量机(RVM)
    力扣刷题 day50:10-20
    oracle11g表+数据完美迁移到10g解决方案
  • 原文地址:https://blog.csdn.net/weixin_44064908/article/details/126217852