基于Aplayer在hexo博客上添加音乐播放器并全局适用不中断播放
hexo博客建好了,除了视觉美化最好还有声觉美化,也就是BGM。早在当年QQ空间时代就已经开始弄BGM了,到了hexo这里自然不能落下。
今天用到的一个js组件是aplayer,一个非常漂亮好用的HTML5音乐播放器,和dplayer师出同门。
下载部署
虽然理论上可以通过npm安装,但是我这里通过npm安装无法实现想要的效果,因此选择提取dist文件的方式部署。
在APlayer GitHub发布页面下载源码,将其中的dist
文件夹解压到hexo/themes/next/source
,即Next主题的source
文件夹下。
创建播放器样式
新建播放器样式的js文件,在hexo/themes/next/source/dist
文件夹中新建music.js
,在其中添加样式代码。
播放器样式代码完整调用及说明:
1 | const ap = new APlayer({ |
更多内容请参考APlayer中文文档
部署到博客
按照上面的设置,已经将播放器样式设置好了,这时候只需要将播放器部署到合适的位置即可。
下面是部署到页面的代码:
1 | <link rel="stylesheet" href="/dist/APlayer.min.css"> |
可以将其放在hexo/themes/next/layout/***.swig
,在不同.swig文件中的效果也不同。
个人建议放置在hexo/themes/next/layout/_partials/header/brand.swig
中,因为brand是全局存在的,这样设置的播放器全局都能看到:
1 | {%- if theme.favicon.apple_touch_icon %} |
利用pajx
实现全局播放不暂停
在切换博文页面的时候,一般情况下都会整页刷新,这导致我们的播放器组件每次切换页面的时候都被”重置“了一次,为了避免这个重置,我们要让浏览器的部分内容(音乐播放器)在切换页面的时候不刷新,换个角度来说就是每次只让页面发生部分内容更新。
pjax
是一个jQuery插件,它的工作是让页面上的页面资源不被重新执行或应用,并且每次切换页面都部分重新渲染页面。这样就可以避免我们正在播放的音乐播放器随着页面切换被刷新掉了。
我这里同样将pajx
部署在hexo/themes/next/layout/_partials/head/head.swig
中:
1 | <meta charset="UTF-8"> |
网上很多教程部署在了
_layout.swig
中,但实测这样并没有全局应用,从部分页面进入的时候pajx
并没有部署好。因此和播放器本身一样,我将其都部署在了head中,因为每个页面都存在head,所以部署在head中的内容从那个页面开始访问都是会被调用出来的。
参考
[1] hexo上的aplayer应用 | Y’s BLOG (yleao.com)
[2] APlayer中文文档