当前位置:首页 > 科技  > 软件

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

来源: 责编: 时间:2024-01-22 08:44:09 385观看
导读二次封装 Storage?关于 Storage 的封装问题,其实都是老生常谈了,很多人都会在项目中去二次封装 Storage,为了让开发者能更加方便地去使用 localStore、sessionStorage。就比如下方,应该是很多人封装的案例,就是封装简单的

二次封装 Storage?

关于 Storage 的封装问题,其实都是老生常谈了,很多人都会在项目中去二次封装 Storage,为了让开发者能更加方便地去使用 localStore、sessionStorage。就比如下方,应该是很多人封装的案例,就是封装简单的 读取、写入,或者有 删除、清空:Qhf28资讯网——每日最新资讯28at.com

Qhf28资讯网——每日最新资讯28at.com

我们为什么封装?

要不我们回过头来想一下,我们为什么要封装?其实封装无非就是为了两个目的:Qhf28资讯网——每日最新资讯28at.com

  • 更好地统一维护
  • 使用者更方便、更无脑地使用

但是我觉得在一个大项目中以及紧急的开发进度中,使用者更方便、更无脑地使用才是封装的第一目的,所以想想刚刚的 LocalStorage 的封装,真的能让使用者更方便、更无脑地使用吗?Qhf28资讯网——每日最新资讯28at.com

我就举个例子吧,我想存进去一个对象,我这么去存,可以吗?Qhf28资讯网——每日最新资讯28at.com

Qhf28资讯网——每日最新资讯28at.com

显然是不行的,存进去的对象会被转成字符串 [object Object]:Qhf28资讯网——每日最新资讯28at.com

Qhf28资讯网——每日最新资讯28at.com

所以我必须这么去存和取值,利用 JSON.parse、JSON.stringify 去转:Qhf28资讯网——每日最新资讯28at.com

Qhf28资讯网——每日最新资讯28at.com

只有这么去做才能达到我的目的:Qhf28资讯网——每日最新资讯28at.com

Qhf28资讯网——每日最新资讯28at.com

但是这样不觉得很麻烦吗?使用者更方便、更无脑地使用是封装的第一目的,显然这样只会让使用者徒增烦恼!!!Qhf28资讯网——每日最新资讯28at.com

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

类型猜测逻辑

所以呢,你如果想要让使用者更方便、更无脑地使用,我们可以封装一套类型猜测逻辑。Qhf28资讯网——每日最新资讯28at.com

首先我们必须准备一个函数,这个函数用来判断数据类型:Qhf28资讯网——每日最新资讯28at.com

Qhf28资讯网——每日最新资讯28at.com

但是光是判断出类型还不够啊,我们还必须给每一种类型,准备一套 读取、存入 的策略:Qhf28资讯网——每日最新资讯28at.com

Qhf28资讯网——每日最新资讯28at.com

最后只需要:Qhf28资讯网——每日最新资讯28at.com

  • 判断类型
  • 获取类型对应的存取策略
  • 在存取的时候执行对应策略

Qhf28资讯网——每日最新资讯28at.com

我们现在可以来试试能不能达到目的:Qhf28资讯网——每日最新资讯28at.com

Qhf28资讯网——每日最新资讯28at.com

显然已经达到我们想要的效果:Qhf28资讯网——每日最新资讯28at.com

Qhf28资讯网——每日最新资讯28at.com

小结

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

本文链接:http://www.28at.com/showinfo-26-65880-0.html90%的人封装Storage时忽略了一个点!你们知道封装的意义是啥吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 解密五个强大的VS Code内置功能

下一篇: C++中产生死锁的原因深度解析

标签:
  • 热门焦点
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • 摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • 掘力计划第 20 期:Flutter 混合开发的混乱之治

    在掘力计划系列活动第20场,《Flutter 开发实战详解》作者,掘金优秀作者,Github GSY 系列目负责人恋猫的小郭分享了Flutter 混合开发的混乱之治。Flutter 基于自研的 Skia 引擎
  • 一文看懂为苹果Vision Pro开发应用程序

    译者 | 布加迪审校 | 重楼苹果的Vision Pro是一款混合现实(MR)头戴设备。Vision Pro结合了虚拟现实(VR)和增强现实(AR)的沉浸感。其高分辨率显示屏、先进的传感器和强大的处理能力
  • Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 慕岩炮轰抖音,百合网今何在?

    来源:价值研究所 作者:Hernanderz“难道就因为自己的一个产品牛逼了,从客服到总裁,都不愿意正视自己产品和运营上的问题,选择逃避了吗?”这一番话,出自百合网联合创
  • iQOO 11S新品发布会

    iQOO将在7月4日19:00举行新品发布会,推出杭州亚运会电竞赛事官方用机iQOO 11S。
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top