浅谈JavaScript的Polymer框架中的behaviors对象


Posted in Javascript onJuly 29, 2015

localStorage 应是家喻户晓的?但本地存储这个家族可远不止它。以前扯过 sessionStorage,现在还有个神奇的 CacheStorage。它用来存储 Response 对象的。也就是说用来对 HTTP ,响应做缓存的。虽然 localStorage 也能做,但是它可能更专业。

CacheStorage 在浏览器上的引用名叫 caches 而不是驼峰写法的 cacheStorage,它定义在 ServiceWorker 的规范中。CacheStorage 是多个 Cache 的集合,而每个 Cache 可以存储多个 Response 对象。

废话不能说再多,下面是 demo

<script>
caches.delete('c1');
caches.delete('c2');
Promise.all([
 caches.open('c1').then(function(cache) {
  return cache.put('/hehe', new Response('aaa', { status: 200 }));
 }),
 caches.open('c2').then(function(cache) {
  return cache.put('/hehe', new Response('bbb', { status: 200 }));
 })
]).then(function() {
 return caches.match('/hehe');
}).then(function(response) {
 return response.text();
}).then(function(body) {
 console.log(body);
});
</script>

首先,在 caches 上调用 open 方法就可以异步地得到一个 Cache 对象的引用。在这个对象上我们可以把 Response 对象 put 进去(参数是一个 URL 和一个 Response 对象)、用 match 方法取出(传入一个 URL 取出对应的 Response 对象)。

match 方法不仅可以在 Cache 上调用 CacheStorage 上也有 match 方法,比如上面例子就打开了两个 Cache,都写入一个叫 /hehe 的 URL。在写入操作完成之后,到外部的 CacheStorage 上调用 match 方法来匹配 /hehe,结果是随机的(没找到这个规则在哪里定义的)。

虽然上面的例子中只对 Cache 对象 put 了一个数据,而 Cache 对象本身可以存放更多的 URL/Response 对。并且提供了 delete(用户删除)、keys(用于遍历)等方法。但是 Cache 并不像 localStorage 一样有 clear 方法,如果非要清空一个 Cache,可以直接在 CacheStorage 上把整个 Cache 给 delete 掉再重新 open。

这套 API 和 ServiceWorker 一家的,它通常被用于 ServiceWorker 中,整个设计风格也和 ServiceWorker 一样都基于 Promise。

Javascript 相关文章推荐
html 锁定页面(js遮罩层弹出div效果)
Oct 27 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
Jun 24 Javascript
用js模拟struts2的多action调用示例
May 19 Javascript
node.js中的console.assert方法使用说明
Dec 10 Javascript
jQuery中innerHeight()方法用法实例
Jan 19 Javascript
JavaScript中的Number数字类型学习笔记
May 26 Javascript
js动态获取子复选项并设计全选及提交的实现方法
Jun 24 Javascript
js实现加载更多功能实例
Oct 27 Javascript
javascript中的try catch异常捕获机制用法分析
Dec 14 Javascript
ES6入门教程之Iterator与for...of循环详解
May 17 Javascript
浅谈Angular路由守卫
Aug 26 Javascript
BootstrapTable加载按钮功能实例代码详解
Sep 22 Javascript
JavaScript中的cacheStorage使用详解
Jul 29 #Javascript
JavaScript中数组继承的简单示例
Jul 29 #Javascript
小议JavaScript中Generator和Iterator的使用
Jul 29 #Javascript
浅析Node.js的Stream模块中的Readable对象
Jul 29 #Javascript
浅谈Javascript数组的使用
Jul 29 #Javascript
举例讲解Node.js中的Writable对象
Jul 29 #Javascript
浅谈Javascript数组索引
Jul 29 #Javascript
You might like
用PHP实现多级树型菜单
2006/10/09 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
jQuery aminate方法定位到页面具体位置
2013/12/26 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
Vue.js 中的实用工具方法【推荐】
2019/07/04 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
python中bisect模块用法实例
2014/09/25 Python
Python类的动态修改的实例方法
2017/03/24 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
大四学生思想汇报
2014/01/13 职场文书
平遥古城导游词
2015/02/03 职场文书
教师个人发展总结
2015/02/11 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
初中思品教学反思
2016/02/20 职场文书
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python