90%的人封装Storage时忽略了一个点!你们知道封装的意义是啥吗?

前言

二次封装 Storage?

关于 Storage 的封装问题,其实都是老生常谈了,很多人都会在项目中去二次封装 Storage,为了让开发者能更加方便地去使用 localStore、sessionStorage

就比如下方,应该是很多人封装的案例,就是封装简单的 读取、写入,或者有 删除、清空

我们为什么封装?

要不我们回过头来想一下,我们为什么要封装?其实封装无非就是为了两个目的:

  • 更好地统一维护

  • 使用者更方便、更无脑地使用

但是我觉得在一个大项目中以及紧急的开发进度中,使用者更方便、更无脑地使用才是封装的第一目的

所以想想刚刚的 LocalStorage 的封装,真的能让使用者更方便、更无脑地使用吗?

我就举个例子吧,我想存进去一个对象,我这么去存,可以吗?

显然是不行的,存进去的对象会被转成字符串 [object Object]

所以我必须这么去存和取值,利用 JSON.parse、JSON.stringify 去转

只有这么去做才能达到我的目的

但是这样不觉得很麻烦吗?使用者更方便、更无脑地使用是封装的第一目的,显然这样只会让使用者徒增烦恼!!!

有的人就说了,可以把 JSON.parse、JSON.stringify 写在 useLocalStorage 中,但是这个方案只是针对 Object 而已,但是数据类型其实有多种:number、string、object、set、map、date 等等,你直接写在里面,不太合理,你得兼顾所有的数据类型才行!!

类型猜测逻辑

所以呢,你如果想要让使用者更方便、更无脑地使用,我们可以封装一套类型猜测逻辑

首先我们必须准备一个函数,这个函数用来判断数据类型

但是光是判断出类型还不够啊,我们还必须给每一种类型,准备一套 读取、存入 的策略

最后只需要:

  • 判断类型

  • 获取类型对应的存取策略

  • 在存取的时候执行对应策略

我们现在可以来试试能不能达到目的

显然已经达到我们想要的效果

小结

当然, Storage 的封装不仅仅是类型猜测这么一个功能点!而且其实封装还有很多兜底的情况我这里没写出来,本文就是想让大家知道,封装 Storage 的时候,类型猜测是一个最基本的功能,有这个功能,使用者更方便、更无脑地使用

相关推荐
Z兽兽1 天前
React@18+Vite项目配置env文件
前端·react.js·前端框架
SuniaWang1 天前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
A_nanda1 天前
根据AI提示排查vue前端项目
前端·javascript·vue.js
happymaker06261 天前
web前端学习日记——DAY05(定位、浮动、视频音频播放)
前端·学习·音视频
~无忧花开~1 天前
React状态管理完全指南
开发语言·前端·javascript·react.js·前端框架
LegendNoTitle1 天前
计算机三级等级考试 网络技术 选择题考点详细梳理
服务器·前端·经验分享·笔记·php
@大迁世界1 天前
1.什么是 ReactJS?
前端·javascript·react.js·前端框架·ecmascript
BJ-Giser1 天前
Cesium 基于EZ-Tree的植被效果
前端·可视化·cesium
王码码20351 天前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
发现一只大呆瓜1 天前
深入浅出 AST:解密 Vite、Babel编译的底层“黑盒”
前端·面试·vite