Natural Potato Magnet

    @alicloud/storage-factory
    TypeScript icon, indicating that this package has built-in type declarations

    1.3.2 • Public • Published

    @alicloud/storage-factory

    Why

    一个应用最好有自己的一个 storage 的主 key 作为其统一的 namespace 对 storage 下的字段进行管理,有如下好处:

    • 避免 localStorage / sessionStorage 的泛滥
    • 避免应用内取名冲突
    • 可以存取各种类型的数据,而不是需要转换过才能用的字符串
    • 不必担心出错

    APIs

    这是一个工厂方法,生产一个方法:

    import storageFactory from '@alicloud/storage-factory';
    
    export default storageFactory(`${app_name}@${user_id}`); // 最好能跟登录用户挂钩,默认用的是 locationStorage
    
    // 如果还需要 sessionStorage 的操作,可以这样:
    export const session = storageFactory(`${app_name}@${user_id}`, true);

    工厂方法生产出来的方法是多态的:

    // 获取全部,没有什么实际意义,只在 debug 时可以用
    function storage(): Record<string, unknown>;
    
    // 获取 key 对应的值
    export interface IFnStorageGetter {
      <T = string>(key: string): T;
    }
    
    // 删除 key 对应的值
    export interface IFnStorageClearer {
      (key: string, value: null): void;
    }
    
    // 设置 key 对应的值
    export interface IFnStorageSetter {
      <T = string>(key: string, value: T): void;
    }

    Example

    1. 在应用下生产「唯一」的 storage 模块,比如 util/storage.js

    import storageFactory from '@alicloud/storage-factory';
    
    export default storageFactory(`${app_name}@${user_id}`); // 最好能跟登录用户挂钩,默认用的是 locationStorage
    
    // 如果还需要 sessionStorage 的操作,可以这样:
    export const session = storageFactory(`${app_name}@${user_id}`, true);

    2. 使用

    import storage from ':util/storage';
    
    storage(); // 获取全部,没有什么实际意义
    storage(key); // 获取某个值
    storage(key, val); // 设置某值
    storage(key, null); // 清除某值

    Install

    npm i @alicloud/storage-factory

    DownloadsWeekly Downloads

    70

    Version

    1.3.2

    License

    MIT

    Unpacked Size

    7.66 kB

    Total Files

    13

    Last publish

    Collaborators

    • jacksontian
    • fengmk2
    • pagecao
    • aliyunsdkteam
    • console-fe