首页 > 其他分享 >Vue CLI 系列之(十)webStorage

Vue CLI 系列之(十)webStorage

时间:2024-02-29 19:57:23浏览次数:23  
标签:存储 Vue 浏览器 CLI todoList JSON localStorage webStorage

webStorage【浏览器本地存储】

localStorage和sessionStorage统称为webStorage

1. localStorage

未登录账号的情况下进行了商品搜索,搜索历史中保存了之前的搜索记录

借助浏览器的本地存储可以将数据存到硬盘上,用于缓存数据

通过浏览器如何查看浏览器本地存储

​ 每个网站都有自己的浏览器本地存储,可以通过浏览器开发者工具-应用-存储-本地存储空间查看,不同浏览器查看的位置可能稍有不同,数据是以键值对的形式存储的

window.localStorage

浏览器关闭数据也不会消失

清空浏览器缓存数据会消失

<body>
	<button onclick="saveData()" type="button">点我保存数据</button>
	<button onclick="getData()" type="button">点我读取数据</button>
	<button onclick="deleteData()" type="button">点我删除数据</button>
	<button onclick="truncateData()" type="button">点我清空数据</button>
	
	<script type="text/javascript">
	
		let p = {name:'张三', age:123}
		function saveData(){
			// key和value都得是字符串,如果试图存储值为其他类型的数据,最终存入浏览器本地存储的也是字符串
			// 当value的类型不是字符串时,存储时会调用value的toString()方法并将结果作为value进行存储
			// 如果多次存储相同key的数据,后面的操作会覆盖之前存储的数据
			// 浏览器本地存储的本地视图会试图对字符串进行解析,虽然存入的都是字符串,像JSON字符串这种可以解析为对象的就会以对象形式展示
			localStorage.setItem('msg', JSON.stringify(p))
			localStorage.setItem('msg2','aaa')
		}
		function getData(){
			// 读取JSON字符串可以解析为对象,当msg不存在时,JSON.parse(localStorage.getItem('msg'))的结果也是null
			console.log(JSON.parse(localStorage.getItem('msg')))
			// 当读取的key不存在时,返回null
			console.log(localStorage.getItem('xxx'))
		}
		function deleteData(){
			localStorage.removeItem('msg2')
		}
		function truncateData(){
			localStorage.clear()
		}
		
	</script>
</body>

2. sessionStorage

对于浏览器来说,会话完毕了就表示浏览器关闭了

API完全同localStorage,浏览器只要关闭,数据就没了

3. 总结

  1. 存储内容大小一般支持5MB左右(不同浏览器可能还不一样)

  2. 浏览器端通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制。

  3. 相关API:

    1. xxxxxStorage.setItem('key', 'value');
      该方法接受一个键和值作为参数,会把键值对添加到存储中,如果键名存在,则更新其对应的值。

    2. xxxxxStorage.getItem('person');

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

    3. xxxxxStorage.removeItem('key');

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

    4. xxxxxStorage.clear()

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

  4. 备注:

    1. SessionStorage存储的内容会随着浏览器窗口关闭而消失。
    2. LocalStorage存储的内容,需要手动清除【调用了removeItem、clearAPI或者清空了浏览器缓存】才会消失。
    3. xxxxxStorage.getItem(xxx)如果xxx对应的value获取不到,那么getItem的返回值是null。
    4. JSON.parse(null)的结果依然是null。

4. Todo-list中使用webStorage

<!--App组件-->
data(){
  return {
	// todoList从webStorage中获取,获取不到默认为[],由于存的是字符串,所以需要通过JSON.parse()解析成对象
  	todoList: JSON.parse(localStorage.getItem('todoList')) || []
  }
},
//通过watch实现对todoList属性的监视,只要todoList发生改变,修改自动同步到webStorage中
watch:{
  todoList:{
	//开启深度监视,保证修改勾选状态时也能够正常同步到webStorage中	
    deep: true,
    handler(newValue){
		//JSON.stringify():将对象转为JSON字符串存入webStorage
    	localStorage.setItem('todoList',JSON.stringify(newValue))
    }
  }
},

标签:存储,Vue,浏览器,CLI,todoList,JSON,localStorage,webStorage
From: https://www.cnblogs.com/wzzzj/p/18039996

相关文章

  • Vue CLI 系列之(十四)$nextTick
    $nextTick$nextTick这也是一个生命周期​ 如果要实现一个input框点击后进行一些数据修改的操作【这里是指能够引起Vue重新解析模板的数据修改操作,比如修改data中的数据】,然后让该input框获取焦点,该怎么做?//Item组件中有一个input输入框和一个编辑按钮,实现点击按钮后input框显......
  • Vue CLI 系列之(十三)消息订阅与发布
    消息订阅与发布【pubsub】1.理解消息订阅与发布2.原理图​ 通过报纸的订阅与发布来理解就是:A去C那订阅了报纸demo,并说明了自己的住址test,由于test是定义在A中的,而A又把test的引用提供出来了,这样C只要一调用test,自动就来到了A这,也就找到了A住的地儿,C发布test报纸时携带的内......
  • Vue CLI 系列之(十二)全局事件总线
    全局事件总线【GlobalEventBus】......
  • Vue CLI 系列之(十一)组件自定义事件
    组件自定义事件区别于js内置事件,内置事件是给html元素用的,而自定义事件是给组件用的1.给组件实例对象绑定自定义事件给组件绑定自定义事件v-on:自定义事件名="回调函数"比如:<Studentv-on:atguigu="demo"/>上面代码的含义为:由于v-on是在Student这个组件标签上,所以是给stu......
  • Vue CLI 系列之(十五)过渡与动画
    过渡与动画Vue封装的过渡与动画1.前置知识CSS3动画【2D转换、3D转换、过渡、动画】参考网站:https://www.runoob.com/css3/css3-animations.html<h1v-show="isShow"id="title">显示了</h1><style> h1{ /*通过animation把"donghua"动画捆绑到h1元素,时长:1......
  • Vue 2x 系列之(十五)过滤器
    过滤器BootCDN:包含了一些免费、优秀的第三方类库官网:https://www.bootcdn.cn/moment.js:js的日期处理类库dayjs:moment.js的轻量化解决方案,API同moment.js完全一致引入dayjs,全局就多了一个dayjs()函数,dayjs()函数默认解析当前时间的时间戳,也可传入时间戳进行解析注:过滤器相对......
  • Vue 2x 系列之(十七)自定义指令
    自定义指令从某种程度上来说,Vue中的自定义指令就是把原生DOM操作进行了一次封装指令是不能脱离元素【标签】存在的定义指令:big使用指令:v-big值的写法:对象【可以处理一些细节上的问题】和函数定义指令可以通过两种方式,函数式和对象式1.函数式指令名(真实DOM元素[element],......
  • Vue 2x 系列之(十六)内置指令
    内置指令我们学过的指令: v-bind :单向绑定解析表达式,可简写为:xxx v-model :双向数据绑定 v-for :遍历数组/对象/字符串 v-on :绑定事件监听,可简写为@ v-if :条件渲染(动态控制节点是否存存在) v-else :条件渲染(动态控制节点是否存存在) v-show :......
  • Vue 2x 系列之(十九)Vue组件化编程
    Vue组件化编程一、对组件的理解什么是组件?组件的定义:​ 实现应用中局部【组件要拆的尽量细致】功能代码【对于前端来说,就是css+html+js】和资源【mp3、mp4、ttf、.zip...】的集合【组件是一个集合】与传统方式编程相比,组件化编程有什么优势?依赖关系不混乱、好维护、代码......
  • Vue 2x 系列之(十八)生命周期
    生命周期[函数]......