对
localstorage
的简单增强,方便应对项目中各种情况。目前暂未对不支持localstorage
的平台做兼容处理,所以使用之前一定要确保平台支持localstorage
功能
为了减少学习成本,做了以下事情:
- 最大程度的保持和原生API同名以及语义化命名
- 最大程度的减少新增API以及API的参数
对一些情况的说明:
原则上储存在localstorage
中的key
值只允许为字符串,其它类型的key
无意义。但是在方法中允许传递array
和object
两种key
,会对做类解构赋值处理
引入后会在window上注册全局方法store,所有的实例方法都挂载到store下
npm install --save local-storage-js
<script src='./node_modules/local-storage-js/src/store.js'></script>
require('local-storage-js');
//或者
import form('local-storage-js');
和
localstorage.setItem
作用相同,但是对它的增强
_k
必须参数,允许string
、array
,object
- 为
string
时,直接调用localstorage.setItem
方法, - 为
array
时,array
内的每一个元素表示一个key
- 为
object
时,将会按照对象的键值取得key
,如果_v
不是object
类型,则忽略
- 为
_v
必须参数(_k
为object
时可省略),允许任何类型数据,对于非基础类型数据,会自动调用JSON.stringify
方法转换,以下情况除外:- 当
_k
和_v
同时为array
时,array
内的每一个元素表示一个key
和一个对应的val
,类似结构赋值 - 当
_k
和_v
同时为object
时,会基于_k
合并_v
,每个键值对表示一个储存的item
和val
- 当
_d
非必须参数,针对_k
为复杂类型数据时是否深度变量,默认false只变量一层
//key为string
setItem('name', '2ue') // name:2ue
setItem('name', 222) //name:222
setItem('names',['2ue',222,'uu']) //names:"['2ue',222,'uu']" 调用JSON.stringify()方法
setItem('names',{name:'2ue',nicName:'monork'}) //names:"{name:2ue,nicName:'monork'}" 调用JSON.stringify()方法
//key为array
setItem(['name','nicName'],'2ue')//name:'2ue',nicName:'2ue'
setItem(['name','nicName'],['2ue'])//name:'2ue',nicName:''
setItem(['name','nicName'],['2ue','monork'])//name:'2ue',nicName:'monork'
setItem(['name','nicName'],['2ue','monork','duoyude'])//name:'2ue',nicName:'monork'
setItem(['name','nicName'],{name:'2ue',nicName:'monork'})//自动根据前面拆分的key匹配{name:'2ue',nicName:'monork'}中相同的key值==>name:'2ue',nicName:'monork'
setItem(['name'],{name:'2ue',nicName:'monork'})//自动根据前面拆分的key匹配{name:'2ue',nicName:'monork'}中相同的key值==>name:'2ue'
//key为obejct
setItem({name:'2ue',nicName:'monork'})
setItem({name:'2ue',nicName:'monork'},'test') //等价于第一种
setItem({name:'2ue',nicName:'monork'},['test']) //等价于第一种
setItem({name:'2ue',nicName:'monork'},{name:'heheda'}) //==>{name:'heheda',nicName:'monork'}
setItem({name:'2ue',nicName:'monork'},{name:'heheda',sex: 1}) //==>{name:'heheda',nicName:'monork'}
和
localstorage.getItem
作用相同,但是对它的增强
_k
必须参数,允许string
,array
,object
。当为array
,object
时,按照对应结构返回json数据,默认深度遍历- 支持
obejct
主要是对setItem
一种对应,以便以最小的代价获取对应的值
getItem('name'); //{name:2ue}
getItem(['nicName']) //{nicName:'monork'}
getItem({name:'test',nicName:'test'}) //{name:'2ue',nicName:'monork'}
获取所有的值,返回一个json对象
getItems(); //{name:'2ue',nicName:'monork'}
获取所有的key,返回一个数组
getKeys(); //['name','nicName']
和
localstorage.removeItem
作用相同,但是对它的增强
_k
必须参数,允许string
,array
,object
,深度遍历,无返回值
removeItem('name');
removeItem(['name']) //等价removeItem('name')
removeItem(['name','nicName']) //等价removeItem('name')+removeItem('nicName');
getItem({name:'test',nicName:'test'}) //等价于removeItem(['name','nicName'])
和
localstorage.removeItem
作用相同
判断是否存在某个key
_k
必须参数,只允许string类型,返回布尔值