localStorage
属性允许访问Storage
对象Document
的原点; 存储的数据将保存在浏览器会话中。
localStorage
类似于sessionStorage
,除了当存储的数据localStorage
没有到期时间时,存储的数据在sessionStorage
页面会话结束时清除 - 也就是说,当页面关闭时。
应该注意,存储在页面协议中的数据localStorage
或sessionStorage
特定于页面协议的数据。
键和值始终是字符串(请注意,与对象一样,整数键将自动转换为字符串)
localStorage 的优势
- localStorage 拓展了 cookie 的 4K 限制。
- localStorage 会可以将第一次请求的数据直接存储到本地,这个相当于一个 5M 大小的针对于前端页面的数据库,相比于 cookie 可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的。
localStorage 的局限
- 浏览器的大小不统一,并且在 IE8 以上的 IE 版本才支持 localStorage 这个属性。
- 目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换。
- localStorage在浏览器的隐私模式下面是不可读取的。
- localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡。
- localStorage不能被爬虫抓取到。
- localStorage 与 sessionStorage 的唯一一点区别就是 localStorage 属于永久性存储,而 sessionStorage 属于当会话结束的时候,sessionStorage 中的键值对会被清空
下面这个例子是教程的例子,一般来说都是以setItem存值,getItem取值的:
<!DOCTYPE html> <html> <body> <div id="result"></div> <script> // Check browser support if (typeof(Storage) !== "undefined") { // Store localStorage.setItem("lastname", "Gates"); // Retrieve document.getElementById("result").innerHTML = localStorage.getItem("lastname"); } else { document.getElementById("result").innerHTML = "抱歉!您的浏览器不支持 Web Storage ..."; } </script> </body> </html>
那么想要让这个属性存储json数据,只能把json转换成string类型的才能存进去了,否则是无法存储的,拿到了也要转换成json格式
localStorage.setItem("records",JSON.stringify(state.records));
取值可以定义一个state,Vue里面的状态管理十分丰富,有机会再记录
const state={ records:localStorage["records"]?JSON.parse(localStorage["records"]): [], nowIndex:0 } export default state
在其他地方使用时,定义了全局的状态管理后,使用方法如下:
records() { return this.$store.state.records; }