t-comm
Version:
专业、稳定、纯粹的工具库
105 lines (100 loc) • 2.84 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var env_env = require('../env/env.js');
/**
* 写入持久化存储localStorage。仅用于浏览器端,value里不能有循环引用
* @param {string} key 键
* @param {string} value 值
* @param {number} expireMsec 过期时间,单位毫秒
* @returns {boolean} 是否存储成功
*
* @example
* const res = savePersist('name', 'mike', 30 * 86400 * 1000); // true
* const name = getPersist('name'); // mike
*
* clearPersist('name'); // true
* const name2 = getPersist('name'); // undefined
*/
function savePersist(key, value, expireMsec) {
if (expireMsec === void 0) {
expireMsec = 0;
}
if (env_env.checkNodeEnv()) {
return false;
}
if (!window.localStorage || typeof window.localStorage === 'undefined') {
return false;
}
var data = '';
try {
data = JSON.stringify(value);
} catch (err) {
console.error(err);
}
if (!data) {
return false;
}
if (!expireMsec) expireMsec = 30 * 86400 * 1000;
localStorage["vue_da|".concat(key)] = data; // 数据
localStorage["vue_ep|".concat(key)] = Date.now() + expireMsec; // 对应失效时间
return true;
}
/**
* 读取持久化存储
* @param {string} key
* @returns {string} key对应的值
*/
function getPersist(key) {
if (env_env.checkNodeEnv()) {
return undefined;
}
if (!window.localStorage || typeof window.localStorage === 'undefined') {
return undefined;
}
if (localStorage["vue_ep|".concat(key)] < Date.now()) {
delete localStorage["vue_ep|".concat(key)];
delete localStorage["vue_da|".concat(key)];
return undefined;
}
var data = undefined;
try {
data = JSON.parse(localStorage["vue_da|".concat(key)]);
} catch (err) {
data = undefined;
delete localStorage["vue_ep|".concat(key)];
delete localStorage["vue_da|".concat(key)];
}
// 顺便清理一下其它可能过期的
clearPersist();
return data;
}
/**
* 持久化存储。清理。传 key 就删除。不传清理所有过期的。
* @param {string} [key]
* @returns {boolean} 是否清楚成功
*/
function clearPersist(key) {
if (env_env.checkNodeEnv()) {
return false;
}
if (!window.localStorage || typeof window.localStorage === 'undefined') {
return false;
}
if (key) {
delete localStorage["vue_ep|".concat(key)];
delete localStorage["vue_da|".concat(key)];
} else {
Object.keys(localStorage).forEach(function (i) {
// if (localStorage.hasOwnProperty(i)) {
if (i.indexOf('vue_ep|') === 0 && localStorage[i] < Date.now()) {
delete localStorage[i];
delete localStorage["vue_da".concat(i.slice(6))];
}
// }
});
}
return true;
}
exports.clearPersist = clearPersist;
exports.getPersist = getPersist;
exports.savePersist = savePersist;