封裝window.sessionStorage,window.localStorage,並且可以設置過期時間

封裝window.sessionStorage,window.localStorage,並且可以設置過期時間

封裝window.sessionStorage

export const session = {
    set(key, val) {
        if (typeof val !== 'string') {
            val = JSON.stringify(val);
        }
        window.sessionStorage.setItem(key, val);
    },
    get(key) {
        let val = window.sessionStorage.getItem(key);
        try {
            val = JSON.parse(val);
        } catch (e) {
            console.log(`${val} Unexpected token H in JSON at position 0`);
        }
        return val;
    },
    clear() {
        window.sessionStorage.clear();
    },
    remove(key) {
        if (window.sessionStorage.getItem(key)) {
            window.sessionStorage.removeItem(key);
        }
    }
};

封裝window.localStorage,並且可以設置過期時間

export const storage = {
    /*
    * set 存儲方法
    * @ param {String} 	key 鍵
    * @ param {String} 	value 值,
    * @ param {String} 	expired 過期時間,以分鐘爲單位,非必須
    */
    set(key, val, expired) {
        if (typeof val !== 'string') {
            val = JSON.stringify(val);
        }
        window.localStorage.setItem(key, val);
        if (expired) {
            window.localStorage.setItem(`${key}__expires__`, `${Date.now() + 1000 * 60 * expired}`);
        }
    },
    /*
   * get 獲取方法
   * @ param {String} 	key 鍵
   * @ param {String} 	expired 存儲時爲非必須字段,所以有可能取不到,默認爲 Date.now+1
   */
    get(key) {
        const expired = window.localStorage.getItem(`${key}__expires__`) || Date.now + 1;
        const now = Date.now();

        if (now >= expired) {
            window.localStorage.removeItem(key);
            return;
        }
        let val = window.localStorage.getItem(key);
        try {
            val = JSON.parse(val);
        } catch (e) {
            console.log(`${val} Unexpected token H in JSON at position 0`);
        }
        return val;
    },
    clear() {
        window.localStorage.clear();
    },
    /*
    * remove 移除
    * */
    remove(key) {
        if (window.localStorage.getItem(`${key}__expires__`)) {
            window.localStorage.removeItem(`${key}__expires__`);
        }

        if (window.localStorage.getItem(key)) {
            window.localStorage.removeItem(key);
        }
    }
};

過期時間參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章