这是两个完全不同的概念 =。= 之前刚接触vue的时候也是傻傻分不清,看到萌新跟当初的我一样有相同的疑问,那就系统记录下。
首先 vuex
是给 vue 用的状态管理库(除了能管理数据 state,还能管理读写数据的操作 mutation ),而 localStorage
仅仅是个浏览器提供的api,在状态管理这方面,它只起到将数据持久化存储的作用,至于管理读写数据的操作,不存在的……
并且,vuex
中的数据是存储在内存中的,页面刷新就会丢失,而 localstorage
则是存储在计算机本地,刷新并不会丢失
举个栗子深入理解 vuex
如果你的整个项目是一个酒店,这间酒店能用做菜的 原材料
(data)和 厨具
(function)做出各种美味的 菜肴
(经过处理的 data,注入到写好样式的页面中),各个.vue文件.js文件都看作是一个单独的酒店房间,都能堆放各种 data 和 function ,
那么 vuex
就是这间酒店的中心仓库,存储了整间酒店做所有各式菜肴都要用到的通用 原材料
(state)以及 厨具
(mutation)
举个栗子深入理解 localStorage
在 vuex
中的运用
比如你说的用户信息 userInfo
,在 vuex
中是放在整个单对象树的 state
属性里的,书写管理这个 userInfo
的 mutation
有两种方案:
方案一:
不使用
localStorage
。页面每次要用到userInfo
都是直接通过发送请求从api服务器处获取
方案二:
使用
localStorage
。 先声明一个调用 api 拉取用户信息到本地并存入 localstorage 的getUserInfoFromAPIsaveToLocalStorage()
方法,要用到userInfo
的时候,则调用从本地 localstorage 读取用户信息的getUserInfoFronLocalStorage()
方法
在 vuex 里,getUserInfoFromAPIsaveToLocalStorage()
和 getUserInfoFronLocalStorage()
这两个 function 是放在 mutation 属性里的