28个案例问题分析---013---学情页面逻辑问题--LocalStorage

简介: 28个案例问题分析---013---学情页面逻辑问题--LocalStorage

目录

一:背景介绍

此案例为项目上的一个线上BUG,问题比较简单,但是比较具有学习意义,今天写到这,警示自己。

1.1 代码展示

前端使用的Vue2,对应的项目代码如下所示:1.2 逻辑分析

这部分代码对应的逻辑是

1.通过后端接口查询了。某个课下的某个班的某个用户的评论,获赞,回复次数

2.如果这些次数都为0的话,去缓存中获取次数。

3.如果评论的内容是空的话,将内容置为0,将点赞数置为0,将回复数置为0

4.如果这次次数都不为0的话,将用户的评论,获赞,回复次数存入缓存


二:LocalStorage基础知识

首先,我们要去了解,什么是LocalStorage,怎么使用LocalStorage缓存


2.1 LocalStorage是什么?

LocalStorage是一种浏览器提供的API,用于在Web浏览器中存储数据。它允许Web开发人员在浏览器中存储和检索键值对,以便在用户关闭浏览器后仍然可以访问数据。

LocalStorage中存储的数据是永久性的,直到被Web应用程序删除或浏览器缓存被清除

LocalStorage通常用于存储临时状态或应用程序的配置信息,例如用户的首选项或上次使用的数据。它可以通过JavaScript代码进行访问和操作。

2.2 LocalStorage怎么使用?

2.2.1 语法

使用JavaScript中的localStorage对象创建一个LocalStorage实例。

const localStorage = window.localStorage;

使用localStorage.setItem()方法将键值对存储到LocalStorage中

localStorage.setItem('key', 'value');

使用localStorage.getItem()方法检索LocalStorage中的值。

const value = localStorage.getItem('key');

使用localStorage.removeItem()方法删除LocalStorage中的值。

localStorage.removeItem('key');

我们要特别注意的是,存储在LocalStorage中的数据始终以字符串形式存在。如果您想存储对象或数组,需要使用JSON.stringify()将其序列化为字符串,并使用JSON.parse()将其反序列化为原始值。


2.2.2 浏览器控制台实操

2.2.2.1 实际操作

我们可以在浏览器的控制台中,直接的使用Console界面,尝试使用LocalStorage进行一些数据存储。获取。

2.2.2.2 对应数据2.3 LocalStorage的优势与劣势

2.3.1 优势:

1. 存储空间大,扩展了cookie的4K限制,有5M的数据存储空间。它就像一个针对前端界面的数据库一般。
2. localStorage的数据爬虫爬取不到

2.3.2 劣势:

1.不同的浏览器版本存储量不统一,并且只支持IE8以上的IE版本。
2. localStorage的值类型限定为string类型
3. localStorage在浏览器的隐私模式下面是不可读取的

2.4 项目中选择使用LocalStorage注意事项

命名问题

现在我们的线上就有这个问题,在同源的域名下,同源的两个项目的localStorage是互通的。如果我们存储信息时太过于简单的话,可能会造成互相污染的现象。比如存储用户信息的时候,使用user来作为key存储,但是两个环境都使用了这个user就会产生污染问题。

时效性问题

上文已经讲过。localStorage除非手动进行清除,否则的话将会一直存在。如果有一些时效性的键值,比如说token,可能会过期,那么我们使用的时候就一定要设置过期时间。

隐蔽性问题

上文的图片里显示,我们所有存在localStorage里面的数据的,都是在Application里面可以直接看到的,上线之后,用户也是可以直接看到的,但是有的数据我们并不想让用户看到,这时候就要考虑隐蔽性的问题了。

三:学情页面逻辑问题分析

3.1 逻辑问题

讨论评论数为0的话,将点赞数赋成了0。

这个问题是和我们的业务相关的。参与讨论的数量和点赞的次数没有关系。这些数据应当由后端进行计算,前端直接进行渲染就可以,不应该写这些额外的没有意义的逻辑。

3.2 缓存滥用问题

使用缓存保存了查回来的数据。

缓存是用来存储一些不经常变化的数据的,如果数据的变化需要与vue的条件渲染结合那就不要使用缓存的方式。可以在页面中声明变量。如果多个页面使用数据,需要进行状态管理,我们应当选择vuex进行状态的管理。

四:总结&升华

我们在用一项技术的时候,一定要明确,它的作用是什么。不能够想用就用,必须要明确利弊,才能进行使用。如果不清楚利弊,可能会给我们带来各种想不到的问题(隐私模式localStorage无法读取,字符类型。过期等等),我们完全不知道这些问题更别谈如何规避了。所以一定要明确技术的应用场景才能使用。

写代码的时候要结合业务进行编写,如果有特殊的点,一定要写好注释,不要给后来人留下疑问。

知其然,更要知其所以然。


目录
相关文章
|
6月前
若依框架 --- 修改默认跳转页面
若依框架 --- 修改默认跳转页面
754 0
|
4月前
|
Java 数据库连接 应用服务中间件
表单数据返回不到,HTTP状态 404 - 未找未找到,解决方法,针对这个问题,写一篇文章,理一下思路,仔细与原项目比对,犯错的原因是Mapper层的select查询表单数据写错,注意打开的路径对不对
表单数据返回不到,HTTP状态 404 - 未找未找到,解决方法,针对这个问题,写一篇文章,理一下思路,仔细与原项目比对,犯错的原因是Mapper层的select查询表单数据写错,注意打开的路径对不对
|
5月前
|
应用服务中间件
大事件后端项目03----sprinigboot配置文件—基本使用
大事件后端项目03----sprinigboot配置文件—基本使用
|
6月前
|
SQL 算法 Java
若依框架---更新删除注意点
若依框架---更新删除注意点
290 0
|
6月前
|
JavaScript 前端开发
若依框架 --- 偶发的el-select无法选择的问题
若依框架 --- 偶发的el-select无法选择的问题
329 0
|
6月前
|
BI PHP
php代码优化---本人的例子
php代码优化---本人的例子
55 0
|
前端开发
前端 window.print() 打印方案、优化策略总结(一)
前端 window.print() 打印方案、优化策略总结(一)
829 0
前端 window.print() 打印方案、优化策略总结(一)
|
存储 PHP
php开发实战分析(2):cookie的动态使用(设置、获取、删除、猜你喜欢原理、购物车调用)
php开发实战分析(2):cookie的动态使用(设置、获取、删除、猜你喜欢原理、购物车调用)
217 0
|
自然语言处理 前端开发 JavaScript
28个案例问题分析---014课程推送页面逻辑整理--vue
28个案例问题分析---014课程推送页面逻辑整理--vue
101 0
|
前端开发 JavaScript 数据可视化
javascript逐行显示数据及php实时输出前端内容后台保持继续运行的解决方案(setTimeout定时器、flush和ob_flush函数、安装进度展示)
javascript逐行显示数据及php实时输出前端内容后台保持继续运行的解决方案(setTimeout定时器、flush和ob_flush函数、安装进度展示)
203 0