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)/すべて破棄
初期化メソッドパラメータには、空でもコールバック関数として関数が必要です.
optionはデフォルトで空のオブジェクトで、3つのオプション属性があります.
save(obj,callback)/オブジェクトを保存
保存形式はオブジェクトであり、入力オブジェクトにkey属性がある場合、keyはインデックス値として保存され、key属性がない場合、自動的にkey値が生成するtableに保存される.indexで
batch(array,callback)/オブジェクトのセットを保存する効果は同じです
exists(key,callback)/keyが存在するかどうかを確認し、結果のブール値(true/false)をcallback関数に渡す
get(key|array,callback)/1つまたは複数のオブジェクトを取得し、callback処理を呼び出す
all(callback)/すべてのオブジェクトを1つの配列に戻します
each(callback)/コレクションを巡回し、(オブジェクト、オブジェクトインデックス)をcallback関数に渡す
remove(key|array,callback)/要素のセットを削除します.
nuke(callback)/すべて破棄
keys(callback)/ストレージオブジェクトのすべてのkeysを返す
筆者のプロジェクトを例に
新しいブラウズレコードの管理者のjsファイルコード実装
履歴書を見るときに履歴書情報を格納し、SAVETIMEは格納された日付に対応します.この記録は30日しか残っていない.
履歴書を大量に検索してデータを得た後、履歴書が記録の中にあるかどうかを判断し、すでに表示されていると表示されます.
クリア30のレコードが適切に呼び出される.
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のレコードが適切に呼び出される.