extension作りで勉強したことメモ

delicous引っ張ってくるext作ってみた Part2

を作った際に覚えたことのまとめ。
同じこと調べないためのメモとして。

データ保存編

localStorage

key-value型のデータをブラウザ内に永続化する。
extensionのオプション設定などをお手軽保存出来る。

localStorage.setItem(key, value);
var value = localStorage.getItem(key);

//上下どちらでもOK
localStorage.key = value;
var value = localStorage.key;

*valueには文字列しか保存できないので変換が必要。

var obj = {
  hoge: fuga,
  foo: bar };

// 保存
localStorage.hogehoge = JSON.stringify(obj); // stringifyで変換
// 取得
var getObj = localStorage.hogehoge;
JSON.parse(getObj); // parse
webDatabase

SQlite3でのデータベースも作れる(容量制限あり)

・open
   ・openのときにDBのバージョンが違うと怒られる
   ・changeVersionを使ったり
・transaction
   ・sql実行(trans.executeSql)
   ・selectにもtransaction必要

の流れ

// dbオブジェクトが返る
// developer tools の'Storage'を見るとDatabaseの所に出てくる
var db = openDatabase(name, version, [comment], [size]);
db.transaction(
  function(trans){
    trans.executeSql(SQL, bind, callback);
  },
  function(e){ console.log(e); }, // SQLエラー時の関数。省略可
  function(res){ console.log('OK'); } // transaction完了時の関数。省略可
);

trans.executeSql でselectしか結果はcallbakの中で見れる

trans.executeSql('select * from hoge where 1 = ?', [1], // bindもOK
  function(trans, r){
    // r.rows に結果が入ってくる
    console.log(r.rows.length); // 返ってきた行数
    r.rows.item(0).fuga // 一つ目のfugaカラムのデータ
  }
);
SQliteメモ

普段はmysqlを使ってるからsqliteでいっぱい怒られた。

・auto increment なidを作りたいとき
  ・id INTEGER PRIMARY KEY で出来る
・insertは一行ずつ
  ・ insert .... values (hoge, fuga), (foo, bar); はエラーで怒られる
・trancate文はない
  ・delete from hoge が正解??
課題
・vacumeって何だろうか??
  ・後で調べる
・changeVersion
  ・今回は使ってないからextension更新するときに使ってみる

chromeでextension作るときはこれでとりあえず問題なかった。
もっと色々出来るみたいなので何か作るときに追加で使ってみよう(゚∀゚)