开发环境:HBuder工具 + mui框架
框架官网:http://www.dcloud.io/
框架API:http://www.html5plus.org/doc/h5p.html
公司开发APP一直使用的webApp的方式进行,这样既可以不用额外招聘安卓和ios开发外,还可以不用头疼各种分辨率兼容的问题。
之前有个APP有个需求是需要将某些用户数据存储到手机,并且不能被用户主动删除的那种,如果用缓存,肯定是不能满足要求的,后来我用js模拟了一个简单的类似于redis的数据存储插件。下面附上代码 [有使用案例]:
/**
* 移动端的数据存储操作的工具类[移动端的一个小型的本地数据库]
* 主要的方式是文件操作和自动解析
*
* 数据库的数据存贮格式为 键值对 方式,类似PC端的 redis
*
* 插件作者:孙帅
* 开发时间:2017-05-04
*
*
* new CwAppDB().InsertOrUpdate(table,key,value);
* 数据的插入或更新,传入一个表名,key值,以及key对应的value值。存储成功不会有任何提示,存储失败会弹出"数据存储出错"
* 【注,因为文件操作为异步,所以同一时间(1-2秒内)只能调用一次InsertOrUpdate方法,否则只会是最后一个方法有效】
*
*
* new CwAppDB().SelectKey(table,key,OnSelectOver);
* 数据的查询操作,传入一个表名,key值,以及接收查询结果的回调方法 OnSelectOver(key,value),
* 回调方法有两个参数,第一个是查询的key值,第二个是接收查询到的结果,查询的时候,请在回调方法中处理查询结果
*
*
* new CwAppDB().DeleteKey(table,key);
* 数据的删除操作,传入一个表名,和一个key值,若在库中找到了该值,则删除,否则不进行任何操作
*
*
* new CwAppDB().InsertOrUpdateArry(table,keys,values);
* 数据库的批量添加操作,传入一个表名和一个key值数组 以及一个value值数组。注意,key值和对应的value值的下标一定要对应
*
*
* new CwAppDB().DeleteKeyArry(table,keys);
* 数据的批量删除操作,传入一个表名,和一个key值数组
*
*
* new CwAppDB().SelectAll(table,OnSelectOver);
* 数据的全表查找,传入一个表名,和一个回调方法,
* 返回一个JSON数组格
*
*
* new CwAppDB().SelectToValue(table,keyword,OnSelectOver);
* 查找数据库value值中包含某个关键字的所有的数据,传入表名,查询关键字,回调方法,
* 返回一个JSON数组格
*/
!(function(){
window.CwAppDB = function(){
mui.init({});
}
CwAppDB.prototype={
InsertOrUpdate: function(table,key,value,OnSelectOver){//存储数据【key不存在的时候是添加,存在的时候是修改】。table:表名 key和value只能是字符串,不能有特殊符号 OnSelectOver:回调方法
key=key.replace('>','').replace('<','').replace('\\','');
value=value.replace('>','').replace('<','').replace('\\','');
mui.plusReady(function() {
plus.io.requestFileSystem( plus.io.PRIVATE_DOC, function( fs ) {
fs.root.getFile('DB/'+table+'.cdb',{create:true}, function(fileEntry){
fileEntry.file( function(file){//创建一个文件读写对象,文件没有的时候创建一个新的
var fileReader = new plus.io.FileReader();
fileReader.readAsText(file, 'utf-8');
fileReader.onloadend = function(evt) {
// alert(evt.target.result);//文件内容
if(evt.target.result!=""){
var keysValues=evt.target.result.split("\r\n");
for(var i=0;i<keysVal