您的位置:首页 > Web前端 > Vue.js

关于vue路由缓存清除在main.js中的设置

2020-02-13 12:19 591 查看

1.main.js

/* 页面数据缓存 */
var _CACHE_OBJS = {};

function _init_cache(comp, key, cache) {
var obj = cache[key];
if (obj !== undefined) {
comp[key] = obj;
}
var deep = typeof comp[key] === 'object';
comp.$watch(key,
function (val) {
//console.log("page " + key + " updated");
cache[key] = val;
}, {
deep: deep
});
}

var _PAGE_CACHE = {
/*
* 初始化页面缓存数据
* comp: 当前页面component 对象
* path: 当前页面vue router path
* data: 需要缓存的数据对象名称,或名称数组
*/
cache: function (comp, path, data) {
if (data == '' || data == undefined || data == null) {
data = restore(comp._data);
}
var cache = _CACHE_OBJS[path];
if (cache === undefined) {
cache = {};
_CACHE_OBJS[path] = cache;
}
if (typeof data == 'string') {
_init_cache(comp, data, cache);
} else {
var i;
for (i = 0; i < data.length; ++i) {
_init_cache(comp, data[i], cache);
}
}
console.log(_CACHE_OBJS, "页面数据缓存");
},

/* 清除页面缓存 */
clear: function (path) {
delete _CACHE_OBJS[path];
},

/* 清空所有缓存数据 */
reset: function () {
//console.log("reset page cache");
_CACHE_OBJS = {};
},
/*根据path查看当前页面缓存是否存在*/
has_cache: function (path) {
return _CACHE_OBJS[path] !== undefined && !isEmptyObject(_CACHE_OBJS[path]);
}
};

Vue.prototype.$cache = _PAGE_CACHE;
/* eslint-disable no-new */

var restore = function (vueObject) {
var result = [];
for (var index in vueObject) {
result.push(index);
}
return result;
};

var isEmptyObject = function (obj) {
for (var key in obj) {
return false;
}
return true;
}

以上这篇关于vue路由缓存清除在main.js中的设置就是小编分享给大家的全部内容了,希望能给大家一个参考

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vue 路由 缓存 main.js