js Lawnchairを使用してjsonオブジェクトをローカルに格納

5430 ワード

項目にはクリック記録を格納する機能が用いられる.
Lawnchairは軽量級のモバイルアプリケーションデータ持続化ストレージ方案であり、同時にクライアントJSONドキュメントストレージ方法でもあり、長所は短く、文法が簡潔で、拡張性が良い.今HTML 5モバイルアプリを作るにはLocalStorageの互換性が良いほか、SQL web databaseやIndexedDBが行き詰まり、「LocalStorage APIをやめるべきだ」と叫ぶ人もいますが、それは後話で、今は選択肢がありません.Lawnchairにはかつての公式サイトがあります.http://westcoastlogic.com/lawnchair/ただし、このサイトが提供するソースバージョンは時代遅れで、エラーもあります.ダウンロードが必要な場合は、最新バージョンはhttps://github.com/brianleroux/lawnchair
APIの要約
keys(callback)/ストレージオブジェクトのすべてのkeysを返す
save(obj,callback)/オブジェクトを保存
batch(array,callback)/オブジェクトのセットを保存
get(key|array,callback)/1つまたは複数のオブジェクトを取得し、callback処理を呼び出す
exists(key,callback)/keyが存在するかどうかを確認し、結果のブール値(true/false)をcallback関数に渡す
each(callback)/コレクションを巡回し、(オブジェクト、オブジェクトインデックス)をcallback関数に渡す
all(callback)/すべてのオブジェクトを1つの配列に戻します
remove(key|array,callback)/要素のセットを削除します.
nuke(callback)/すべて破棄
初期化メソッドパラメータには、空でもコールバック関数として関数が必要です.
var store = new Lawnchair({name:'test'}, function() {});
  
var store = new Lawnchair(function() {});

optionはデフォルトで空のオブジェクトで、3つのオプション属性があります.
option = {
    name://     
    record://
    adapter://    
}

save(obj,callback)/オブジェクトを保存
保存形式はオブジェクトであり、入力オブジェクトにkey属性がある場合、keyはインデックス値として保存され、key属性がない場合、自動的にkey値が生成するtableに保存される.indexで
var store = Lawnchair({name:'tableName'}, function(store) {
    });
store.save({
        key:'hust',
        name:'xesam_1'
    })
store.save({
        key:'whu',
        name:'xesam_2'
    })

batch(array,callback)/オブジェクトのセットを保存する効果は同じです
var store = Lawnchair({name:'table'}, function(store) {
    });
store.batch([{
        key:'hust',
        name:'xesam_1'
    },{
            key:'whu',
            name:'xesam_2'
        }])

exists(key,callback)/keyが存在するかどうかを確認し、結果のブール値(true/false)をcallback関数に渡す
store.exists('whu',function(result){
        console.log(result);//true
})
store.exists('test',function(result){
        console.log(result);//false
})


get(key|array,callback)/1つまたは複数のオブジェクトを取得し、callback処理を呼び出す
store.get('hust',function(result){
        console.log(result);//{key:'hust',name:'xesam_1'}
    })

all(callback)/すべてのオブジェクトを1つの配列に戻します
store.all(function(result){
        console.log(result);//[{key:'hust',name:'xesam_1'},{key:'whu',name:'xesam_2'}]
    })

each(callback)/コレクションを巡回し、(オブジェクト、オブジェクトインデックス)をcallback関数に渡す
store.each(function(result){
        console.log(result);
        //{key:'hust',name:'xesam_1'}
        // {key:'whu',name:'xesam_2'}
    })

remove(key|array,callback)/要素のセットを削除します.
store.remove('whu',function(){
        store.all(function(result){
            console.log(result)//[{key:'hust',name:'xesam_1'}]
        });
    })

nuke(callback)/すべて破棄
store.nuke(function(){
        store.all(function(result){
            console.log(result)//[]
        });
    })

keys(callback)/ストレージオブジェクトのすべてのkeysを返す
store.keys(function(result){
        console.log(result)//['hust','whu']
    })

筆者のプロジェクトを例に
新しいブラウズレコードの管理者のjsファイルコード実装
var haveReadResumeTableName = 'haveReadResumeTableName'

function getHaveReadResumeTableManager() {
    return new Lawnchair({name: haveReadResumeTableName}, function(store) {});
}

//  30       
function cleanBeforeThirtyDaysResumes() {
    var claerReadResumeHistoryDay = localStorage.claerReadResumeHistoryDay;
    if(claerReadResumeHistoryDay){
        try{
            if(getCurrentDate() == claerReadResumeHistoryDay){
                return;
            }
        }catch(e){
            //TODO handle the exception
        }
    }
    localStorage.claerReadResumeHistoryDay = getCurrentDate();
    var manager = getHaveReadResumeTableManager();
    
    var beforeThirtyDays = getAfterDay(-30);
    manager.each(function(resume,keyo) {
        if(resume.SAVETIME < beforeThirtyDays) {
            manager.remove(resume.RESUMEID, function() {});
        }
    });
}


履歴書を見るときに履歴書情報を格納し、SAVETIMEは格納された日付に対応します.この記録は30日しか残っていない.
        //       
        function saveThisResumeToLoactionWithResumeAndTime(resumeId, nowTime) {
            var store = getHaveReadResumeTableManager();
            //        
            var resume = {
                key: resumeId,
                RESUMEID: resumeId,
                SAVETIME: nowTime
            };
            //   
            store.save(resume);
        }

履歴書を大量に検索してデータを得た後、履歴書が記録の中にあるかどうかを判断し、すでに表示されていると表示されます.
                var resumeManager = getHaveReadResumeTableManager();
                for(var i = 0, len = list.length; i < len; i++) {
                    var resume = list[i];
                    var li = document.createElement('li');
                    //          
                    var haveReadret = false;
                    resumeManager.exists(resume.RESUMEID, function(haveRead) {
                        haveReadret = haveRead;
                    });

クリア30のレコードが適切に呼び出される.