vuex和localStorage、sessionStorage的区别

文章目录

  • localStorage属性
  • sessionStorage属性
  • Vuex
  • 区别

localStorage属性

  • localStoragesessionStorage 属性允许在浏览器中存储 key/value 对的数据。

  • localStorage 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去删除。

  • localStorage 属性是只读的。

  • 提示: 如果你只想将数据保存在当前会话中,可以使用 sessionStorage属性, 该数据对象临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。

语法

window.localStorage

保存数据语法

localStorage.setItem("key", "value")

读取数据语法

var lastName = localStorage.getItem("key")

删除数据语法

localStorage.removeItem("key")
  • 优势

    • localStorage 拓展了 cookie 的 4K 限制。
    • localStorage 会可以将第一次请求的数据直接存储到本地,这个相当于一个 5M 大小的针对于前端页面的数据库,相比于 cookie 可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的。
  • 局限

    • 浏览器的大小不统一,并且在 IE8 以上的 IE 版本才支持 localStorage 这个属性。
    • 目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换。
    • localStorage在浏览器的隐私模式下面是不可读取的。
    • localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡。
    • localStorage不能被爬虫抓取到。
  • 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属性

  • sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。

  • 提示: 如果你想在浏览器窗口关闭后还保留数据,可以使用 localStorage属性, 该数据对象没有过期时间,今天、下周、明年都能用,除非你手动去删除。

语法

window.sessionStorage

保存数据语法

sessionStorage.setItem("key", "value");

读取数据语法

var lastname = sessionStorage.getItem("key");

删除指定键的数据语法

sessionStorage.removeItem("key");

删除所有数据

sessionStorage.clear()

Vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

用法:Vuex

区别

  1. vuex 存储在内存,localstorage(本地存储)则以文件的方式存储在本地,永久保存sessionstorage( 会话存储 ) ,临时保存。localStorage和sessionStorage只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理

  2. 应用场景:vuex用于组件之间的传值,localstorage,sessionstorage则主要用于不同页面之间的传值。

  3. 永久性:当刷新页面(这里的刷新页面指的是 --> F5刷新,属于清除内存了)时vuex存储的值会丢失,sessionstorage页面关闭后就清除掉了,localstorage不会。

总结

用localstorage可以代替vuex,对于不变的数据确实可以,但是当两个组件共用一个数据源(对象或数组)时,如果其中一个组件改变了该数据源,希望另一个组件响应该变化时,localstorage无法做到。

这俩完全就是俩个东西,vuex是vue的状态管理机制,是方便组件之间通信的。一个组件的数据变化是会映射到使用这个数据的其他的组件。而localstorage是本地存储,是将数据存到浏览器的方法,一般是在跨页面传递数据时使用。

你可能感兴趣的:(vue)