在 浏览器数据库 IndexedDB 简明教程 ( 二 ) - 相知 ( 术语 ) 我们介绍了 IndexedDB 的相关概念和一些数据
所有 Web 端的新特性,例如最新的 HTML5 、JavaScript 最新的 ES2015
、ES2016
和 ES2017
、CSS3,游览器对它们的支持都有个循序渐进的过程,所以,有时候,即使是 3 年前的东西,现代的浏览器可能还不支持,比如最近坑爹的 IE
IndexedDB 浏览器支持和检测
所有的现代浏览器都支持 IndexedDB
,包括 IE10
,不过在 IE9
及以下版本中不支持
IndexedDB
是浏览器 Window 全局变量上的一个对象,对于不支持的浏览器,该对象就不存在,所以检测的方法一般如下
if ( winow.indexedDB ) { // IndexedDB 可以使用 } else { // IndexedDB 不可以用 // 提示用户,如果要用到最新的特性,应该切换浏览器或使用其它浏览器 alert('你的浏览器不支持本地存储 IndexedDB,你可以升级浏览器或使用其它浏览器,比如 Chrome'); }
当浏览器不支持的时候的设计模式 module-aware
说起浏览器不支持的特性的处理情况,我就想起了很早之前某个人说过的一句话
「 对于前端开发,不要把浏览器当作一个最终展现 Web 的工具,而是应该把它动作最基础的 Web 展现工具 」
我对于这句话的理解,对于浏览器不完全支持的属性,应该继续封装一层,对外不感知是否支持
这种设计模式,我是从 PSR 15 HTTP 请求处理 中学到的
也就是说,对于我们自己不可控的基础组件或框架,我们使用它们的最好方式,就是重新设计中间一层,从而屏蔽底层的东西,达到随时可替换底层基础固件的目的
这种设计模式,在最新的 Go module 中称之为 「 module-aware 」
这是一种非常有趣的设计模式,这种设计模式非常符合团队开发需要
在我们的 简单教程 的后端中,对于 Memcached 的使用,我就封装了一次,从而能在 pylibmc
和 python-memcached
之间自由切换
更多 「 module-aware 」 设计模式的细节,你可以查看前几天我写的那几篇 [Go Module 简明教程]