Vue.js开发中基于localStorage与sessionStorage的本地存储利器:Vue-ls插件使用详解

文章目录

      • 一、介绍
      • 二、安装
      • 三、使用
        • 1、在main.js中导入插件并配置
        • 2、在组件中使用
        • 3、全局使用
        • 3、上下文使用
      • 四、API
        • 1、获取数据
        • 2、设置数据
        • 3、移除数据
        • 4、清空数据
        • 5、监听数据
        • 6、移除监听
      • 五、使用示例
        • 1、单独的 js 文件
        • 2、使用方法
      • 六、typescript+vue3使用vue-ls
        • 1、新建 storage.ts
        • 2、组件导入
      • 七、注意事项

一、介绍

在Vue.js的开发过程中,我们经常需要在客户端存储一些数据,以便在用户关闭页面或刷新后能够恢复之前的状态。Vue-ls插件就是一个为Vue.js设计的本地存储解决方案,它基于localStorage和sessionStorage,使得在Vue组件中存取数据变得异常简单。

二、安装

npm install vue-ls --save

三、使用

1、在main.js中导入插件并配置

main.js

import Vue from 'vue'
import Storage from 'vue-ls';
// vue-ls 的配置
const storageOptions = {
    namespace: 'vue_',   // key 键的前缀(随便起)
  	name: 'ls',          // 变量名称(随便起) 使用方式:Vue.变量名称 或 this.$变量名称
  	storage: 'local'     // 存储方式: session, local, memory
}

Vue.use(Storage, storageOptions);

其中options是配置选项,可以设置以下字段:

  • namespace:命名空间,默认为"ls"。
  • name:存储名称,可以是一个数组,用于批量存储。默认为"ls"。
  • storage:存储引擎,LocalStorage或SessionStorage,默认为LocalStorage。
  • expries:过期时间,单位为毫秒数,默认为0,表示永不过期。
  • hasProto:是否在原型上使用getter和setter,默认为true。
2、在组件中使用

app.vue

new Vue({
    el: '#app',
    mounted: function() {
        Vue.ls.set('foo', 'boo');
        // 设置有效期
        Vue.ls.set('foo', 'boo', 60 * 60 * 1000); //有效1小时
        Vue.ls.get('foo');
        Vue.ls.get('boo', 10); // 如果没有设置boo,返回默认值10
        
        let callback = (val, oldVal, uri) => {
          console.log('localStorage change', val);
        } 
        
        Vue.ls.on('foo', callback) //侦查改变foo键并触发回调
        Vue.ls.off('foo', callback) //不侦查
        
        Vue.ls.remove('foo'); // 移除
    }
});
3、全局使用
Vue.ls.set('key', 'value')

3、上下文使用
this.$ls.set('key', 'value')

四、API

1、获取数据
Vue.ls.get(name, def)

返回storage中 name值。在返回之前,内部解析JSON中的值
def:默认为 null。如果 key 不存在,则返回 def。

methods: {
    getKey () {
      // age 和 age2 都不存在
      const age = this.$ls.get('age')
      const age2 = this.$ls.get('age2', 22)
      console.log(age)    // null
      console.log(age2)   // 22
    }
  }
2、设置数据
Vue.ls.set(name, value, expire)

设置一个 key,并且可以设置有效时间。
expire:默认为 null。name 的有效时间,单位为毫秒。

methods: {
    setKey () {
        this.$ls.set('age', 22)   // age 的有效时间为永久,除非自动清除
        this.$ls.set('name', 'cez', 3000)   // name 的有效时间为 3s,3s 后为 null
    }
}
3、移除数据
Vue.ls.remove(name)

从存储中删除某一个 key,成功返回 true,否则返回 false。

methods: {
    removeKey () {
        const age = this.$ls.remove('age')
        console.log(age)   // undefined:不管删除成功还是删除失败都会返回 undefined,和官方解析不一样,不知道为什么??
    }
}
4、清空数据
Vue.ls.clear()

清空所有 key。

methods: {
    clearKey () {
        this.$ls.clear()
    }
}
5、监听数据

Vue.ls.on(name, callback)
设置侦听器,监听 key,若发生变化时,就会触发回调函数 callback。
callback 接受三个参数:

  • newValue:存储中的新值
  • oldValue:存储中的旧值
  • url:修改来自选项卡的 url
6、移除监听

Vue.ls.off(name, callback)
删除设置的侦听器

五、使用示例

1、单独的 js 文件
// webStorage.js

import Storage from 'vue-ls';
const localStorageOptions = {
    namespace: 'vue-', // key prefix
    name: 'ls', // name variable Vue.[ls] or this.[$ls],
    storage: 'local' // storage name session, local, memory
};
const sessionStorageOptions = {
    namespace: 'vue-', // key prefix
    name: 'ss', // name variable Vue.[ls] or this.[$ls],
    storage: 'session' // storage name session, local, memory
};

export default {
    ls: Storage.useStorage(localStorageOptions).ls,
    ss: Storage.useStorage(sessionStorageOptions).ls
};
2、使用方法
import webStorage from '@/utils/webStorage.js';
webStorage.ls.set('token');
webStorage.ss.set('token');

六、typescript+vue3使用vue-ls

1、新建 storage.ts
import Storage from 'vue-ls';
const options = {
  namespace: 'vuejs__', // key prefix
  name: 'ls', // name variable Vue.[ls] or this.[$ls],
  storage: 'local', // storage name session, local, memory
};

const { ls } = Storage.useStorage(options)

export default ls

2、组件导入
<script lang="ts" setup>
import ls from "@/util/storage/"
ls.set('user','admin',60*60*1000)
</script>

七、注意事项

  • 数据安全性:localStorage和sessionStorage中的数据是明文存储的,因此不适合存储敏感信息。对于需要保密的数据,建议使用其他更安全的方式进行存储。

  • 数据大小限制:不同浏览器对localStorage和sessionStorage的存储大小有不同的限制,一般来说,单个域名下的存储限制在5MB左右。因此,不建议在客户端存储大量数据。

  • 数据持久性:localStorage中的数据是持久化的,即使用户关闭浏览器或重启设备,数据仍然会保留。而sessionStorage中的数据则会在页面会话结束时被清除。因此,在选择存储方式时,需要根据实际需求进行权衡。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/594912.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多域名证书一个域名50元

多域名SSL数字证书是一种特殊的域名SSL证书&#xff0c;它可以同时保护多个不同的独立域名&#xff0c;对于域名网站比较多的个人和企事业开发者来说&#xff0c;为每个网站购买不同的SSL证书是一项不小的开销。因此&#xff0c;CA认证机构推出了两种SSL证书——通配符SSL证书和…

内网使用有道云翻译(安装离线包,支持翻译长句)

当我们使用有道云翻译时&#xff0c;为了在没网的情况下也能准确进行翻译&#xff0c;我们需要下载一些离线包增强翻译效果&#xff0c;但是我们在内网进行有道云安装时&#xff0c;他只提供了一个有道云的exe安装&#xff0c;并没有提供离线包的安装&#xff0c;我们这里实现在…

vue快速入门(五十五)插槽基本用法

注释很详细&#xff0c;直接上代码 上一篇 新增内容 当传输内容只有一种时的基础写法 源码 App.vue <template><div id"app"><h1>被淡化的背景内容</h1><my-dialog><!-- 插槽内容:文字以及dom结构都可以传 --><span>你确…

分布式锁与秒杀

分布式锁与秒杀 1. 分布式锁1.1 常用Redis分布式锁方案三&#xff1a;使用Lua脚本(包含SETNX EXPIRE两条指令) 秒杀 1. 分布式锁 https://www.cnblogs.com/shoshana-kong/p/17519673.html 1.1 常用Redis分布式锁方案三&#xff1a;使用Lua脚本(包含SETNX EXPIRE两条指令) …

Gradio的Dataframe数据显示不全,例如只能显示前15行数据

Gradio的Dataframe数据显示不全&#xff0c;例如只能显示前15行数据 ⚙️1.软件环境⚙️&#x1f50d;2.问题描述&#x1f50d;&#x1f421;3.解决方法&#x1f421;&#x1f914;4.结果预览&#x1f914; ⚙️1.软件环境⚙️ Windows10 教育版64位 Python 3.10.6 Chrome 版本…

RFC 791 (1)-导论

目录 浅论 IP是啥 IP可以管啥 操作 范例查看 提示&#xff1a;本系列将会开始RFC文档阅读&#xff0c;这里会给出我的一些笔记 浅论 我们这篇RFC文档描述的是IP和ICMP协议&#xff0c;我们都知道&#xff0c;在传统的OSI七层或者是现在被简化的五层&#xff1a;应用层&…

绘唐3工具怎么成为团长阿

绘唐3怎么成为团长阿 这里https://qvfbz6lhqnd.feishu.cn/wiki/D3YLwmIzmivZ7BkDij6coVcbn7W

统一大型语言模型和知识图谱:路线图

【摘要】 大型语言模型&#xff08;LLM&#xff09;&#xff0c;如ChatGPT和GPT4&#xff0c;由于其涌现能力和泛化性&#xff0c;正在自然语言处理和人工智能领域掀起新的浪潮。然而&#xff0c;LLM是黑箱模型&#xff0c;通常无法捕捉和获取事实知识。相反&#xff0c;知识图…

图片如何转换成jpg?分享三种简单方法

在日常生活中&#xff0c;我们经常需要将照片转换为JPG格式以便于分享或者上传&#xff0c;然而&#xff0c;小伙伴不知道的是不同的设备和软件可能会有不同的默认保存格式。如果你发现你的照片不是jpg格式&#xff0c;那么如何将图片如何转换成jpg呢? 如果您有其他格式的图片…

Windows 系统使用Jenkins 实现CI一键打包部署操作

一 下载安装jenkins jenkins 中文官网链接: 下载地址 点击下载&#xff0c;完成后是一个.msi后缀的安装文件&#xff0c;双击安装 安装和普通软件一样&#xff0c;一路next&#xff0c;安装路径自己设置一下&#xff0c;默认是C盘&#xff0c;我C盘不够用了&#xff0c;设置…

【C++基础】this指针

一&#xff0c;this指针引入 不同对象调用相同函数时 &#xff0c;打印出来的值不一样&#xff0c;为什么&#xff1f; 这就隐含了一个this指针。this指针又叫隐含的this指针。&#xff08;不能显示写&#xff0c;但能显示用&#xff09; 注&#xff1a;1&#xff0c;红色部…

企业计算机服务器中了rmallox勒索病毒怎么处理,rmallox勒索病毒解密恢复

网络在为企业提供便利的同时&#xff0c;也为企业的数据安全带来严重威胁。随着网络技术的不断发展&#xff0c;越来越多的企业利用网络开展各项工作业务&#xff0c;网络数据安全问题&#xff0c;一直成为企业关心的主要话题&#xff0c;但网络威胁随着网络技术的不断成熟&…

《Fundamentals of Power Electronics》——一些常用变换器的正则电路参数值

对于理想的CCM PWM dc-dc转换器&#xff0c;其包含一个电感和电容&#xff0c;正则模型有效的低通滤波器需要包含一个电感和一个电容。正则模型简化为如下图所示。 假设电容与负载直接相连。基础的buck、boost和buck-boost转换器的参数值如下表所示。 该模型可以用传统的线性电…

Leetcode—1652. 拆炸弹【简单】

2024每日刷题&#xff08;127&#xff09; Leetcode—1652. 拆炸弹 实现代码 class Solution { public:vector<int> decrypt(vector<int>& code, int k) {int codeSize code.size();vector<int> ans(codeSize, 0);if(k 0) {return ans;}if(k > 0)…

【Linux】命令行参数和环境变量

目录 一、命令行参数 1.1 main函数的参数 1.2 命令行参数 二、环境变量 2.1 概念 2.2 查看和设置环境变量 2.2.1 查看环境变量 2.2.2 设置环境变量 2.2.3 设置PATH环境变量 2.2.4 环境变量表 2.2.5 本地变量和环境变量的区别 2.2.6 内建命令和常规命令 2.3 环境变…

新人0基础拼多多入门,纯小白快速入门多多(21节课)

课程内容&#xff1a; 1 店铺体系说明 .mp4 2 ㄠ衬雛饯铺运营雷区 ,mp4 3 店铺领航员 .mp4 4 店铺设置及管理 ,mp4 5 多多客服设置,mp4 6 店铺资金中心 .mp4 7 店铺运营小工具 ,mp4 8 售后及商品管理,mp4 9 发布机会商品.mp4 10 店铺营销 .mp4 11 产品类型 .mp4 12…

速锐得深入研究比亚迪E5电控系统及BCU数据及DBC控制策略

新能源汽车中比亚迪作为世界品牌的佼佼者&#xff0c;其E5车型凭借出色的电控系统成为了市场上的一颗璀璨明星。比亚迪E5电控系统不仅体现了技术的先进性&#xff0c;更是智能化、高效率的代名词&#xff0c;它如同一位智慧的指挥官&#xff0c;精确地掌控着汽车的每一个动作&a…

VGA项目:联合精简帧+双fifo+sobel算法 实现VGA显示(未完)

前言&#xff1a;该项目实际上是在很多基础的小练习上合成起来的&#xff0c;例如涉及到uart&#xff08;rs232&#xff09;的数据传输、双fifo流水线操作、VGA图像显示&#xff0c;本次内容在此基础上又增添了sobel算法&#xff0c;能实现图像的边沿监测并VGA显示。 文章目录…

深度学习之基于Vgg16卷积神经网络乳腺癌诊断系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于VGG16卷积神经网络的乳腺癌诊断系统项目是一个结合深度学习技术和医学图像处理的创新项目&#xff0c;旨在提高…

JetPack之ViewModel+LiveData

目录 一、概述二、LiveData 使用2.1 创建 LiveData 对象2.2 观察 LiveData 对象2.3 更新 LiveData 对象 三、编写 LiveData Demo3.1 不使用 LiveData3.2 使用 MutableLiveData3.3 使用 MediatorLiveData3.3.1 监听 2 个数据源的变化3.3.2 编写模拟 2 个数据源更新的代码 四、Vi…
最新文章