简介页面
做了点更新,现在我在听歌的时候简介会显示个小图标,显示歌名
接口优化
返回格式优化了一下,方便前端获取
部分计算,比如当前是否正在播放以及获取专辑图片的逻辑,都放在了后端
server/api/playing/index.ts
interface MusicInfo {
playing: boolean
name: string
artist: string
albumCover?: string
}
interface Result {
success: boolean
data?: MusicInfo
}
音乐专辑图片加载的优化
图片预加载,封装成了函数。在这个基础上又做了页面的图片的加载效果
composables/utils/useLoadImage.ts
export default async function useLoadImage(url: string, timeout = 5000): Promise<boolean> {
return new Promise((resolve, reject) => {
const image = new Image()
const timer = setTimeout(() => {
reject(new Error('Image load timeout'))
}, timeout)
image.onload = () => {
clearTimeout(timer)
resolve(true)
}
image.onerror = () => {
clearTimeout(timer)
reject(new Error('Image load error'))
}
image.src = url
})
}
nuxt-lodash 问题
本来直接安装了 lodash-es
,但发现 Nuxt 有现成的模块 nuxt-lodash
安上之后发现 server
目录下的文件,编辑器报错,本来以为是类型问题,自己手动改了 tsconfig.json
,添加了 Nuxt 生成的 lodash
的类型
结果控制台提示未定义,那就是自动引入的问题了
刚好借这个机会研究了一下,顺便提了个 PR