上午想搞一个QQ音乐播放器,研究了半天,最终确认,官方的API有各种限制(VIP的不能播、纯享版的不能播)
然后就想自己抓取、自己实现吧。
既然自己实现的话,那就得考虑,这个播放器的功能极限到哪里?
比如说,可以让用户在浏览器上【记住这个选择】(默认不播放、或者从默认列表里面删除自己不喜欢的歌曲)。
众所周知,在浏览器里面定入数据,是可以用cookies的,然后cookies又有容量限制。(虽然说大多数情况下,存储的数据不能达到cookies的上限,但也不是没有,比如说,我到在某个“段子”网站上,看多了段子以后,cookies溢出,网站开始给我发重复的段子)
然后我就想起了WebSQL好像是浏览器支持不好。当时我是花了3、4天的时间,封装了一套存储和操作的JS类,通过WebSQL保存我要的数据(具体功能,好像是缓存广告图片)。最终测试的时候发现,有的浏览器不支持WebSQL.
所以,这次,我打开了几个常有的浏览器,再去百度看看哪个支持得广泛一些。
好吧。IndexedDB支持得多。
找来文档看看——什么?全是异步操作?!
异步不是好,但是,异步操作往往会把前后相关的业务逻辑冲得稀碎。C#里面,针对多个异步操作有WhenAll()封装,但是JS里面没有,得自己重新实现。而且就算封装完了,也不一定有用。因为有的逻辑要条件1,2,3,4全成功才行。有的逻辑只要1,3,4成功就可以。有的逻辑1,3当中可以有一个是失败的。全都写在异步就是灾难。
看了一会文档,我又看了一眼Example,竟然不同的浏览器采的是不同的实现:
window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
反正百度出来一堆的东西,看看别的页面吧。其中有一个是:
《Firefox:浏览器内置数据库之路》
原来,是Firefox这伙人非要“格色”:我就是不想支持WebSQL,然后还鼓动微软也这么干。
阮一峰的博客上也说:“就数据库类型而言,IndexedDB 不属于关系型数据库(不支持 SQL 查询语句),更接近 NoSQL 数据库。”
也就是说FF在W3C上说,WebSQL这东西不好,然后IndexedDB 会更好。结果,IndexedDB 弄出来以后,竟然没有SQL?!!
这世界不只是NoSQL一种需求好么?更多的时候是SQL查询好不好?难道说多列筛选再加上排序,我还得发回Server?
就冲WebSQL,我就想骂FF一万遍!
难怪后来微软放弃自家IE的内核之后转换了Webkit。FF的人现在竟然这么不靠谱。(对了,听说FF要把图标上的小狐狸给拿掉,迷之操作。)
官方API:
https://y.qq.com/m/api/open/index.html