如何在JavaScript中使用localStorage详情


Posted in Javascript onFebruary 04, 2021

如果你是一名开发人员,想要进入到.NET的世界,你需要知道都有哪些可能。由于.NET Framework是.NET生态系统中最流行的技术,你可以用它来构建各种各样的应用程序,但是最近,出现了一些新的东西,比如 .NET Core 和.NET Standard library。我们可以在项目或构建中使用它吗?

localStorage对象是web编程中应用最广泛的对象之一。它提供了在用户计算机上本地存储键值对的简单解决方案。

大多数web开发人员都喜欢localStorage API,因为它具有简单的语法并且可以存储高达5MB的数据。

除此之外,所有主流浏览器的最新版本都支持Web Storage API,其中包括localStorage和sessionStorage。只有Opera Mini不支持webstorage API。

你可以通过打开Chrome DevTools快速验证你的浏览器是否支持webstorage API。导航到“控制台”,键入下面的代码片段,并按enter键。

typeof(Storage)

如果你收到一个undefined ,那么你的浏览器不支持webstorage API。如果你的浏览器支持它,那么你应该看到“function”。

本文探讨了以下问题:

  • localStorage是什么?
  • localStorage和sessionStorage之间有什么区别?
  • 如何使用localStorage API执行CRUD操作
  • 常见的本地存储有什么坑?
  • localStorage的有什么限制?

localStorage是什么?

正如之前提到的,localStorage对象是浏览器本地支持的webstorage API的一部分。这是一个简单而有效的键/值存储解决方案。

对于web开发人员来说,使用localStorage对象的最大好处是可以脱机存储。最重要的是,当用户关闭浏览器或重启电脑时,我们不会丢失数据。即使在计算机重新启动后,网站仍然可以使用localStorage API读取本地存储在用户计算机上的数据。

这个解决方案为web开发人员提供了几个有趣的用例。

  • 离线存储网站的用户设置
  • 保留用户搜索历史
  • 保留购物车里的物品

接下来,让我们比较localStorage和sessionStorage。

localStorage和sessionStorage之间有什么区别?

虽然这两个api看起来是相同的,但它们的执行方式有细微的差异。

localStorage API用于本地存储数据。因此,当用户刷新选项卡、关闭浏览器或重启计算机时,本地保存的数据不会丢失。它是长期存储基本数据的理想解决方案。

sessionStorage API在页面刷新后仍然有效,但只能在相同的选项卡中工作。

简而言之,在为应用程序选择存储解决方案时要注意。例如,最好的做法是将用户设置信息存储在localStorage中。相反,sessionStorage最适合为特定会话存储数据。

如何使用localStorage API执行CRUD操作

本节向你展示如何使用localStorage API进行添加、读取、更新或删除操作。在此基础上,我将向你展示一个清除特定页面localStorage的技巧。

首先,让我们在localStorage对象中创建一个新的键值对。setItem函数接受一个键及其值。为密钥选择一个合适的名称,你可能将使用该密钥名称再次进行检索。

localStorage.setItem(‘my-key', ‘some-value')

现在让我们再次检索新创建的对象。

let item = localStorage.getItem(‘my-key')

console.log(item) // Output: “some-value”

这很简单。让我们继续更新my-key的值。注意,我们使用相同的setItem函数来覆盖它的值。

localStorage.setItem(‘my-key', ‘new-value')

最后,让我们删除这个键。removeItem函数接受一个参数,它就是想要删除的键。

localStorage.removeItem(‘my-key')

为了确保我们已经删除了所有键,让我们使用clear函数来清除存储在localStorage中应用程序的所有内容。

localStorage.clear()

现在,我们已经为更高级的localStorage操作做好了准备。

高级localStorage操作:遍历

让我们看看用于遍历localStorage对象和查找键的方法。

第一种方法使用了最直接的for循环。注意,我们可以直接在localStorage对象上使用length属性。

for(let i=0; i<localStorage.length; i++) {
 let key = localStorage.key(i)
 console.log(`${key} with value ${localStorage.getItem(key)}`)
}

我们也可以直接使用key方法检索相应的键。

for (let i = 0; i < localStorage.length; i++){
 let key = localStorage.key(i)
 console.log(key)
}

接下来,让我们看看在使用localStorage API时要避免的坑。

localStorage常见的坑

让我们看一下与localStorage API交互时最常见的两个坑。

首先,尝试存储一个JSON对象。localStorage API被设计为键-值对存储。因此,该值只接受字符串,不接受对象。然而,这并不意味着我们不能存储对象。我们需要将它序列化为一个字符串。

const dinner = { apples: 5, oranges: 1 }
localStorage.setItem(‘my-dinner', JSON.stringify(dinner))

当读取序列化的对象时,我们需要再次将其解析为JSON。

let dinner = JSON.parse(localStorage.getItem(‘my-dinner'))

其次,尝试存储一个布尔值。同样,localStorage API只支持字符串。存储布尔值时要小心。

幸运的是,该解决方案类似于存储一个JSON对象。当存储一个布尔值时,setItem函数将把它转换为像这样的字符串- " true "。要读取带有字符串的布尔值,我们可以使用JSON.parse方法将其转换回布尔值。

let myBool = JSON.parse(localStorage.getItem(‘my-bool'))

localStorage的限制

这里是对localStorage限制的快速回顾。

  • 基于字符串的存储
  • 大多数浏览器的存储空间有限,最多可达5 MB
  • 尝试存储巨大字符串时会阻塞主线程。确保不要同时更新相同的键,因为这将导致问题。在这种情况下,最好寻找替代存储解决方案,因为localStorage API不是为这个目的而设计的。
  • Web worker或web service无法访问localStorage
  • 没有内置的安全机制。因此,我们不建议存储密码或与身份验证相关的数据。任何可以访问用户浏览器的人都可以打开一个页面并读取存储在localStorage中的信息,就像图书馆中公共可用的计算机一样。

到此这篇关于如何在JavaScript中使用localStorage的文章就介绍到这了,更多相关如何在JavaScript中使用localStorage内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery jqPlot API 中文使用教程(非常强大的图表工具)
Aug 15 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
JavaScript实现上下浮动的窗口效果代码
Oct 12 Javascript
分享纯手写漂亮的表单验证
Nov 19 Javascript
9种改善AngularJS性能的方法
Nov 28 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
Mar 20 Javascript
默认浏览器设置及vue自动打开页面的方法
Sep 21 Javascript
微信小程序dom操作的替代思路实例分析
Dec 06 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
May 05 Javascript
原生js实现商品筛选功能
Oct 28 Javascript
electron 如何将任意资源打包的方法步骤
Apr 16 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
Oct 14 Javascript
vue浏览器返回监听的具体步骤
Feb 03 #Vue.js
vue实现禁止浏览器记住密码功能的示例代码
Feb 03 #Vue.js
详解React中共享组件逻辑的三种方式
Feb 02 #Javascript
详解微信小程序轨迹回放实现及遇到的坑
Feb 02 #Javascript
学习 Vue.js 遇到的那些坑
Feb 02 #Vue.js
Vue常用API、高级API的相关总结
Feb 02 #Vue.js
JavaScript实现点击自制菜单效果
Feb 02 #Javascript
You might like
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
php5 pdo新改动加载注意事项
2008/09/11 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
Firefox中autocomplete=&quot;off&quot; 设置不起作用Bug的解决方法
2011/03/25 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
softmax及python实现过程解析
2019/09/30 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
Python作用域与名字空间原理详解
2020/03/21 Python
python实现文法左递归的消除方法
2020/05/22 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
个人应聘自我评价分享
2013/11/18 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书