Vue(Vue2+Vue3)——38.浏览器存储(webStorage)

简介: Vue(Vue2+Vue3)——38.浏览器存储(webStorage)

38 浏览器存储(webStorage)


存储内容不是Vue团队打造的,原本的js中就有,所以可以不适用脚手架编译,可以写在HTML中

webStorage又分为localStorage和sessionStorage,浏览器端通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制。

存储内容大小一般支持5MB左右(不同浏览器可能还不一样),它的键值对都是字符串

下面通过一个常见的应用案例来解释说明


38.1 浏览器本地存储应用


浏览器本地存储应用就是在本地浏览器中缓存些东西到硬盘中

下面以唯品会为例子演示,搜索框输入皮鞋,回车搜索

关闭页面,再次打开网页,发现皮鞋存在了搜索历史中

这里我是没有登录的,所以不可能是存入到数据库,浏览器本地存储是存储到硬盘的

通过控制的Application的LocalStorage中可以看到

可以看到是以键值对的形式存储的

如果我们新增一个,可以看到搜索历史中又多了一个

点击❌则会清空

这就是浏览器本地存储应用,我们也是可以通过代码实现类似的功能,下面进行演示


38.2 localStorage(本地存储)


localStorage的最大特点就是就算把浏览器关闭掉也不会消息。如果想把清除它,可以清除缓存

可以通过JS控制ocalStorage的crud,编写几个按钮,分别对localStorage里面的数据进行crud


新增字符串


使用 window.localStorage.setItem('xxx','xxx')方法即可新增,是键值对的形式,window可写可不写

注意:键和值必须都是字符串,如果不是字符串,会默认调用toString()方法


新增对象


如果新增的不是一个字符串,而是一个对象呢,如果直接新增的话,肯定会被toString

所以要使用JSON.stringify格式化处理下

这样新增的时候就可以新增一个字符串和一个对象了


读取字符串


既然设置(新增)使用的是setItem,那么读取肯定就是getItem了,根据key读取,有返回值


读取对象


上面读取对象的格式不是我们想要的,我们需要解析一下

如果读取字符串的是key不存在,那么则显示null

如果读取对象的key不存在,那么也显示null


删除


使用的api是removeItem,根据key删除localStorage中的数据


清空


和删除类似,删除是根据key删除单个,但是清空会删除全部的,这个api是clear

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>localStorage</title>
</head>
<body>
    <h2>localStorage</h2>
    <button onclick="saveData()">点我保存一个数据</button>
    <button onclick="readData()">点我读取一个数据</button>
    <button onclick="deleteData()">点我删除一个数据</button>
    <button onclick="clearData()">清空全部的数据</button>
</body>
<script>
    function saveData(){
        // 向localStorage中存储数据,是键值对的形式 键和值必须都是字符串
        let p={'name':'张三',age:18}
        // 新增对象
        localStorage.setItem('person',JSON.stringify(p))
        // 新增字符串
        localStorage.setItem('msg','hello')
    } 
    function readData(){
        // 根据key读取localStorage中的数据
        // 读取字符串
        console.log(localStorage.getItem('msg'))
        // 读取对象,先解析
        console.log(JSON.parse(localStorage.getItem('person')))
    }
    function deleteData(){
        //  根据key删除localStorage中的数据
        localStorage.removeItem('msg')
    }
    function clearData(){   
        // 清空全部的数据
        localStorage.clear()   
    }
</script>
</html>

到了这里localStorage的应用和查看方式以及简单crud就说完了,localStorage的最大特点就是就算把浏览器关闭掉也不会消息,下面介绍sessionStorage


38.3 sessionStorage(会话存储)


localStorage有一个弟弟叫sessionStorage,它的特点就是浏览器已关闭,数据就没了

localStorage的所有API都可以适用于sessionStorage


既然localStorage的所有API都可以适用于sessionStorage,那么就可以复制刚才localStorage的代码进行简单修改

注意:使用sessionStorage的API要把localStorage进行替换

功能都是一样的,就不贴图了,而且关闭浏览器重新打开后,数据会消失


38.5 总结


相关API:

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

   2.xxxxxStorage.getItem('person'); 该方法接受一个键名作为参数,返回键名对应的值。

   3. xxxxxStorage.removeItem('key');该方法接受一个键名作为参数,并把该键名从存储中删除。

   4.  xxxxxStorage.clear()该方法会清空存储中的所有数据。

4. 备注:

   1. SessionStorage存储的内容会随着浏览器窗口关闭而消失。

   2. LocalStorage存储的内容,需要手动清除才会消失。

   3. xxxxxStorage.getItem(xxx)如果xxx对应的value获取不到,那么getItem的返回值是null。

   4. JSON.parse(null)的结果依然是null。

相关文章
|
19天前
|
JavaScript
vue使用iconfont图标
vue使用iconfont图标
105 1
|
2月前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
163 64
|
2月前
|
JavaScript 前端开发 API
Vue 3 中 v-model 与 Vue 2 中 v-model 的区别是什么?
总的来说,Vue 3 中的 `v-model` 在灵活性、与组合式 API 的结合、对自定义组件的支持等方面都有了明显的提升和改进,使其更适应现代前端开发的需求和趋势。但需要注意的是,在迁移过程中可能需要对一些代码进行调整和适配。
141 60
|
29天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
25天前
|
JavaScript API 数据处理
vue3使用pinia中的actions,需要调用接口的话
通过上述步骤,您可以在Vue 3中使用Pinia和actions来管理状态并调用API接口。Pinia的简洁设计使得状态管理和异步操作更加直观和易于维护。无论是安装配置、创建Store还是在组件中使用Store,都能轻松实现高效的状态管理和数据处理。
91 3
|
2月前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
2月前
|
前端开发 JavaScript 测试技术
Vue3中v-model在处理自定义组件双向数据绑定时,如何避免循环引用?
Web 组件化是一种有效的开发方法,可以提高项目的质量、效率和可维护性。在实际项目中,要结合项目的具体情况,合理应用 Web 组件化的理念和技术,实现项目的成功实施和交付。通过不断地探索和实践,将 Web 组件化的优势充分发挥出来,为前端开发领域的发展做出贡献。
54 8
|
2月前
|
存储 JavaScript 数据管理
除了provide/inject,Vue3中还有哪些方式可以避免v-model的循环引用?
需要注意的是,在实际开发中,应根据具体的项目需求和组件结构来选择合适的方式来避免`v-model`的循环引用。同时,要综合考虑代码的可读性、可维护性和性能等因素,以确保系统的稳定和高效运行。
51 1
|
2月前
|
JavaScript
Vue3中使用provide/inject来避免v-model的循环引用
`provide`和`inject`是 Vue 3 中非常有用的特性,在处理一些复杂的组件间通信问题时,可以提供一种灵活的解决方案。通过合理使用它们,可以帮助我们更好地避免`v-model`的循环引用问题,提高代码的质量和可维护性。
57 1
|
2月前
|
JavaScript
在 Vue 3 中,如何使用 v-model 来处理自定义组件的双向数据绑定?
需要注意的是,在实际开发中,根据具体的业务需求和组件设计,可能需要对上述步骤进行适当的调整和优化,以确保双向数据绑定的正确性和稳定性。同时,深入理解 Vue 3 的响应式机制和组件通信原理,将有助于更好地运用 `v-model` 实现自定义组件的双向数据绑定。

热门文章

最新文章