Vue-浏览器本地存储

一、概述

1.定义

   以文件的方式存储在本地,通过把数据存在浏览器中,用户不必每次都向服务器请求获取同一个信息。在你离线时,使用本地存储的数据而不是向远端服务器上请求数据就非常方便,客户端存储可以通过这些技术来实现:cookie,webStorage(LocalStorage,sessionStorage),这一篇我们着重说webStorage

2.原理

    浏览器通过window.localStorage和window.sessionStorage属性来实现本地存储机制,存储内容大小一般支持5MB左右(不同浏览器可能不一样)

3.相关API

1.xxxStorage.setItem('key','value');      key是添加时使用的名字(键名),value是值 (键值)

  该方法接受一个键和值作为参数,会把键值对添加到存储中,如果键名存在,则更新其对应的值 

2.xxxStorage.getItem('key');

  该方法接受一个键和值作为参数,返回键名对应的值

3.xxx.Storage.removeItem('key');

  该方法接受一个键名作为参数,把该键名从存储中删除 

4.xxx.Storage.clear();

  该方法会清空存储中所有数据 

二、 举例

例如要存储一个组件中的数据,刚开始组件中data的数据都是写好的,done表示事情做还是没做

假如通过其增删操作可以对数组进行修改,现在我们要对todos这个数组进行本地存储

第一步就是要在这个组件中添加一个watch配置,用于监听todos的变化

  1. 我们知道watch监视属性监视的只是表层数据,而我们data数据是数组,里面每一个又是一个对象,所以要使用深度监视,来监视对象里面数据的变化
  2. 使用localStorage.setItem进行存储,如果直接将数据作为参数的话,则得到的是一个object,所以要用JSON.Stringify进行对象到json字符串的转变;

        第二步,现在我们不想数据是在data中写死的了,将todos设置成空数组,通过对数据的增加删除操作来生成数据,当我们添加一个数据的时候,就会更新todos,然后会触发watch监视属性,将todos的值进行本地存储,但是更新后的数据并未在页面上显示,这是因为,我们并没有将数据给读出来,使用localStorage.getItem将数据读出来,前提是将json字符串转为对象更新页面

  1. 避免在后续中要使用到数据的长度,用了|| 空数组
  2. 因为一开始数组是空的,然后localStorage.getItem读取一个空数组,结果是Null,JSON.parse(null)也是null,后续没办法使用一个数组值是null的长度,所以后面接一个或者是空数组

三、 注意

  • sessionStorage存储的内容会随着浏览器窗口关闭而消失
  • localStorage存储的内容,需要手动清除才会消失
  • xxxxxStorage.getItem(xxx);如果对应的value获取不到,那么getter返回的值是null
  • JSON.parse(null)的结果依然是null
  • 注意:两者存储方式均不可以存储对象,若要存储,就要先将对象变为字符串(JSON.stringify)再存储,使用时将字符串变为对象(JSON.parse)即可

### 实现 `ruoyi-vue-pro` 项目的本地 在 `ruoyi-vue-pro` 项目中,为了提高性能并减少服务器压力,通常会采用多种方式来处理数据。对于本地而言,主要依赖于浏览器端的技术实现。 #### 使用 LocalStorage 和 SessionStorage 进行简单键值对储 LocalStorage 和 SessionStorage 是 HTML5 提供的一种简单的键值对储机制,适合用于保少量的数据。这些 API 可以方便地集成到前端应用中,以便快速读取和写入数据。 ```javascript // 储 token 到 localStorage 中 localStorage.setItem('token', 'your_token_value'); // 获取 token const token = localStorage.getItem('token'); console.log(token); // 移除 token localStorage.removeItem('token'); ``` 这种方式适用于短期且不需要持久化的场景,比如用户的登录状态、主题设置等[^1]。 #### Vuex 结合插件管理全局状态与缓 Vuex 是 Vue.js 的官方状态管理模式加库,可以集中管理和共享应用程序的状态。通过引入 vuex-persistedstate 插件,能够轻松实现在页面刷新时不丢失 store 数据的功能。 安装依赖: ```bash npm install vuex-persistedstate ``` 配置 Vuex Store 并启用持久化功能: ```javascript import createPersistedState from "vuex-persistedstate"; export default new Vuex.Store({ plugins: [ createPersistedState({ storage: window.localStorage, // 或者使用 sessionStorage }), ], }); ``` 这样就可以确保即使是在关闭标签页之后重新打开网站时,仍然能保持之前的操作记录以及一些必要的用户偏好设置了。 #### 缓策略的选择依据业务需求而定 不同的应用场景可能需要不同类型的缓方案。例如,在某些情况下,除了上述提到的方法外,还可以考虑 IndexedDB 来满足更复杂的需求;而对于离线支持,则可借助 Service Worker 技术构建 PWA 应用程序。具体选择哪种技术取决于实际开发过程中的具体情况和技术栈匹配度。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值