乐趣区

关于javascript:storagexjs-141-文档

storagex-js 1.4.1

首先须要装置引入 storagex-js

// 应用 npm 装置
npm install storagex-js
// 导入 须要什么就导入什么 所有办法皆是同步办法
import {
    removeStorageItem,
    storageX,
    StorageX,
    localStorageX,
    LocalStorageX,
    sessionStorageX,
    SessionStorageX,
    uniStorageX,
    UniStorageX,
    wxStorageX,
    WxStorageX,
} from "storagex-js";

贮存模式(上面会用到)

mode : 可选值 local,session,uni,wx
local:localStorage,session:sessionStorage,uni:uniApp 的本地贮存,wx: 微信小程序的本地贮存

操作形式

皆是应用以上引入的办法生成代理对象,对代理对象的操作会相应的将该代理的对象贮存到本地,操作该代理对象有两种模式

1:只是对键值进行操作
const storageObj= < 调用办法生成代理对象 >;  // 上面会具体阐明如何生成
storageObj.a = {b:1};  //'a' 对应的值 {'b':'1'}
storageObj.a.b = 2  // 有效,不容许深度批改
// 须要这样
storageObj.a = {b:2};
2:深度的对象化存储(单纯的只对值进行操作)
// 因为思考到如果须要深度代理那么值肯定是个对象
let state = {  // 须要初始化的值
    a:1,
    b:{c:3,},
};
const storageObj = < 调用办法生成可深度代理对象 >;
// 当 storageObj 的属性发生变化时会相应的将 state 存储到本地。storageObj.a = 1;
storageObj.a = {b:{c:{d:2}}};
storageObj.a.c.d = 3;
console.log(storageObj.a.c.d);  // 打印 3
// 只针对值为对象时,而且只会对该对象属性进行批改增加,也就是说像上面这样不论用
storageObj = null;
storageObj = 1;
storageObj = {a:1};
// 理解 js 根底都晓得,这样只是扭转该变量的指向,并不是对原对象进行批改。// 如果想批改键的值请应用下面的那种形式。

各种办法的阐明,类似的跳过

一:removeStorageItem 的应用办法

//key : 须要删除数据的键,mode:贮存模式(默认:local)removeStorageItem(<key>,<mode>);

二:storageX 的应用办法

1:生成对键值进行操作的代理对象
const storageObj= storageX(undefined,undefined,<mode>);  //mode 必填 
2:生成可深度操作的代理对象
let state = {
    a:1,
    b:{c:3,},
};
const storageObj = storageX(
    "state",  // 贮存所对应的键
    state,  // 初始化的值,如果该键有数据且为对象时优先代理
    <mode>,  // 存储模式
);
3:删除
storageObj.removeItem(<key>,<mode>);

三:StorageX 的应用办法(对象式创立)

1:生成对键值进行操作的代理对象
const storageObj= new StorageX({mode:<mode>,  // 必填});
2:生成可深度操作的代理对象
let state = {
    a:1,
    b:{c:3,},
};
const storageObj = new StorageX({
    key:'state',
    target:state,
    mode:<mode>,
});

四:localStorageX 的应用办法

1:生成对键值进行操作的代理对象
const storageObj= localStorageX();
2:生成可深度操作的代理对象
let state = {
    a:1,
    b:{c:3,},
};
const storageObj = localStorageX(
    "state",  // 贮存所对应的键
    state,  // 初始化的值,如果该键有数据且为对象时优先代理
);

五:LocalStorageX 的应用办法(对象式创立)

1:生成对键值进行操作的代理对象
const storageObj= new LocalStorageX();
2:生成可深度操作的代理对象
let state = {
    a:1,
    b:{c:3,},
};
const storageObj = new LocalStorageX({
    key:'state',
    target:state,
});
3:删除
LocalStorageX.removeItem(<key>);

其余几种模式的办法都差不多了,这里就不一一赘述了。

皆不反对函数式贮存,因为函数无奈 JSON 化,既然是数据的话为什么要存函数呢?

可能遇到的问题:因为深度对象化代理不免遇到大数据量的循环批改,每批改一次就存一次太耗费性能,所以一次工作有屡次批改的话,那么最多会存两次,一是第一次批改存一次,二是创立了一个宏工作期待被执行后保留(跟 js 写的防抖函数相似)。

开发日志

1.4.1 对不是深层次的代理对象批改后立刻更新到本地贮存

1.4 增加类的模式引入

1.3 修复 BUG

存储字符串的状况下会多出两个冒号(致命谬误)

1.2 修复 BUG

1:贮存的是数组时,取出来从新赋值会失落 map,filter 等自带的办法。起因:json 化数据时触发了代理的 set 属性,会调用 clone 办法,因为过后思考到数据的贮存简略 clone 一下就行,当初删除了 clone。bug 解决。
2:间接调用 localStorageX() 生成对象从而管制键值,以及更深层次的值,我认为这样不好。解决:勾销深层代理。

一篇文字博客

退出移动版