localStorage 和 sessionStorage 属性允许在浏览器中存储 key/value 对的数据。
localStorage 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去删除。
localStorage 属性是只读的。
提示: 如果你只想将数据保存在当前会话中,可以使用 sessionStorage属性, 该数据对象临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。
语法:
window.localStorage
保存数据语法:
localStorage.setItem("key", "value")
读取数据语法:
var lastName = localStorage.getItem("key")
删除数据语法:
localStorage.removeItem("key")
优势:
局限:
localStorage与sessionStorage的唯一区别就是localStorage属于永久性存储,而sessionStorage属于当前会话结束的时候,sessionStorage中的键值对会被清空。
官方推荐的是 getItem\setItem 这两种方法对其进行存取。
localstorage 存储 json 格式的方法其实比较简单,比如有 json 数据如下:
var data = {
test:"text",
test1:"123456",
test2:"字段值",
}
存储方式为如下,将 json 转化为字符串再存入:
localStorage.setItem("data", JSON.stringify(data));
而使用方法则是如下:
var data = localStorage.getItem("data");
data = JSON.parse(data);
取出存储的字段,再重新转化为 json 形式。
以上对于 json 数据同样有效,所以对于一些接口请求的数据可以通过这种方式本地化。
sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。
提示: 如果你想在浏览器窗口关闭后还保留数据,可以使用 localStorage属性, 该数据对象没有过期时间,今天、下周、明年都能用,除非你手动去删除。
语法:
window.sessionStorage
保存数据语法:
sessionStorage.setItem("key", "value");
读取数据语法:
var lastname = sessionStorage.getItem("key");
删除指定键的数据语法:
sessionStorage.removeItem("key");
删除所有数据:
sessionStorage.clear()
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
用法:Vuex
vuex 存储在内存,localstorage(本地存储)则以文件的方式存储在本地,永久保存,sessionstorage( 会话存储 ) ,临时保存。localStorage和sessionStorage只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理
应用场景:vuex用于组件之间的传值,localstorage,sessionstorage则主要用于不同页面之间的传值。
永久性:当刷新页面(这里的刷新页面指的是 --> F5刷新,属于清除内存了)时vuex存储的值会丢失,sessionstorage页面关闭后就清除掉了,localstorage不会。
总结:
用localstorage可以代替vuex,对于不变的数据确实可以,但是当两个组件共用一个数据源(对象或数组)时,如果其中一个组件改变了该数据源,希望另一个组件响应该变化时,localstorage无法做到。
这俩完全就是俩个东西,vuex是vue的状态管理机制,是方便组件之间通信的。一个组件的数据变化是会映射到使用这个数据的其他的组件。而localstorage是本地存储,是将数据存到浏览器的方法,一般是在跨页面传递数据时使用。