介绍
音乐推荐应用现在非常普遍,我们可以看到很多像 Spotify、Pandora 和 SoundCloud 这样的流媒体平台。
这个项目将使用 JavaScript 创建一个简单的音乐推荐应用。用户可以搜索、播放和喜欢音乐,应用可以根据用户的偏好推荐新的歌曲。
用到的技术
HTML
HTML 是网页的骨架,用于定义页面的内容和结构。在这个应用中,我们将使用 HTML 来构建页面的各个组件。
<div class="container">
<!-- 搜索栏 -->
<div class="search-bar">
...
</div>
<!-- 推荐歌曲列表 -->
<div class="recommended-songs">
...
</div>
<!-- 播放列表 -->
<div class="playlist">
...
</div>
</div>
CSS
CSS 是用于美化页面的样式表语言。在这个应用中,我们将使用 CSS 来定义页面的外观和布局。
.container {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.search-bar {
width: 100%;
margin-bottom: 1rem;
padding: 1rem;
...
}
.recommended-songs {
width: 100%;
...
}
.playlist {
width: 100%;
...
}
JavaScript
JavaScript 是一种通用编程语言,用于编写网页上动态的行为。在这个应用中,我们将使用 JavaScript 来实现搜索、播放和推荐歌曲。
功能实现
搜索
首先,我们需要添加一个搜索栏,让用户可以输入搜索关键字。当用户输入关键字并点击搜索按钮时,应用会使用这些关键字查询 Web API 并返回匹配的歌曲。
async function searchSongs(query) {
const response = await fetch(`https://some-music-api.com/search?query=${query}`);
const songs = await response.json();
return songs;
}
const searchButton = document.querySelector('#search-button');
searchButton.addEventListener('click', async () => {
const searchInput = document.querySelector('#search-input');
const query = searchInput.value;
const songs = await searchSongs(query);
// 显示搜索结果
showSongs(songs);
});
播放和喜欢
当用户点击歌曲时,应用应该播放这首歌曲。用户还可以喜欢一个歌曲,应用应该记录这个用户喜欢的歌曲并在将来的推荐中考虑这个歌曲。
function playSong(song) {
const audioElement = document.querySelector('#audio');
const sourceElement = document.querySelector('#audio-source');
sourceElement.src = song.url;
audioElement.load();
audioElement.play();
}
function likeSong(song) {
// 记录用户喜欢的歌曲,例如:
localStorage.setItem('likedSongs', JSON.stringify([...likedSongs, song]));
}
const songElements = document.querySelectorAll('.song');
songElements.forEach(songElement => {
const playButton = songElement.querySelector('.play-button');
const likeButton = songElement.querySelector('.like-button');
const song = {
name: songElement.querySelector('.song-name').textContent,
artist: songElement.querySelector('.song-artist').textContent,
url: songElement.querySelector('.song-url').href
};
playButton.addEventListener('click', () => {
playSong(song);
});
likeButton.addEventListener('click', () => {
likeSong(song);
});
});
推荐
一旦用户开始喜欢歌曲,应用将开始为他们推荐新歌曲。这可以通过使用用户已经喜欢的歌曲作为查询参数来实现。
async function recommendSongs(likedSongs) {
const response = await fetch(`https://some-music-api.com/recommend?likedSongs=${JSON.stringify(likedSongs)}`);
const songs = await response.json();
return songs;
}
const likedSongs = JSON.parse(localStorage.getItem('likedSongs'));
if (likedSongs) {
const recommendedSongs = await recommendSongs(likedSongs);
showSongs(recommendedSongs);
}
结论
在该项目中,我们使用 HTML、CSS 和 JavaScript 来实现了一个基本的音乐推荐应用。用户可以搜索、播放和喜欢歌曲,应用可以根据用户的偏好推荐新歌曲。