update |
state |
tips |
2017年07月24日 |
修复可用性 |
当不支持websql的时候,依然可用 |
2017年07月24日 |
babel-preset-stage-2 |
增加开发环境实时编译,保证publish es5语法 |
2018年04月04日 |
增加opt参数 |
用于增强接口定制性,业务调用中传过来的参数会原封不动的透传给ajax方法 |
开发
npm install babel-cli
yarn
npm run watch
示意图:
使用方法:
通常,咱们的项目中,会有一个接口名和接口地址对应表 interface.js
export default {
getDetail: ['/web/getDetail', 'get', op => {
return op;
}],
getList: ['/web/getList'],
getContent: '/web/getContent',
};
安装
npm install progressive-cache
yarn add progressive-cache
初始化 —— 你可以在任何地方init,比如:在DOMContentLoaded之后:
import dataController from 'progressive-cache';
import model from 'xx/model';
dataController.init({
size: 10,
ajax: ,
model: model,
loginFreshOption: {
cookieName: 'yourCookieName',
storage: window.sessionStorage
},
prefetchList: [{
name: 'getList',
}, {
name: 'getDetail',
params: { a: 1, b: 2 },
}
]
});
缓存配置表:
import staticData from './static-data';
import dynamicData from './dynamic-data';
export default {
staticData: staticData,
dynamicData: dynamicData,
}
export default {
getContent: [{a: 1, b: 2}],
}
const MS_DAY = 86400000;
export default {
getList: {},
getDetail: {
period: MS_DAY,
defCheckTrigger() {
return new Promise((resolve) => {
resolve(false);
});
},
},
getAuthContents: {
period: MS_DAY,
},
getContent: {
period: MS_DAY
}
}
除了初始化预加载数据,你还可以随时随地预加载数据:
dataController.prefetchData([{
name: 'getDetail',
params: { a: 1, b: 2 }
}, {
name: 'xxx',
params: {}
}]);
获取数据
dataController.getData('getDetail', { a: 1 , b: 2 }, {
}).then(data => {
console.log(data);
});
dataController.getData('getDetail', { a: 1 , b: 2 }, {
speCheckTrigger: () => {
return new Promise(resolve => {
if (this.filterObj.ok)
resolve(false);
});
}
}).then(data => {
console.log(data);
});
dataController.getData('getDetail', { a: 1, b: 2 }, {
opt: {
origin: 'http://xxx.com',
}
}).then(data => {
console.log(data);
});
数据清理
dataController.clearData():
dataController.clearData(['getDetail', 'xxx']):