---
# System prepended metadata

title: store2本地儲存套件

---

# store2本地儲存套件分享


### store2是什麼?
平常我們在使用localStorage時，在儲存以及取值時還需要使用JSON語法將資料進行轉換。
```
/** 儲存 */
const country = [
  {farmers: Tom}
]
const countryString = JSON.stringify(country);
localStorage.setItem('countryItem',countryString);

/** 取得 */
const getStoreString = localStorage.getItem('countryItem');
const transferCountry = JSON.parse(getStoreString);
```
而store2完全解決了這個問題，在我們取值後就可以直接使用，不需要再額外的做轉換的處理。
```
/** 儲存 */
store.set('countryItem', country); // 直接設定即可 套件會幫忙轉換 

/** 取得 */
const storeCountry = store.get('countryItem');
```
就像以上這樣，程式碼不會在落落長，乾淨簡潔。
除此之外還有提供一些API可以供操作。

### 常用API

- **store.setAll(data[, overwrite])**
    可以一次儲存多筆資料，overwrite為true時則覆蓋原有儲存的資料。
    ```
    store.setAll({ key1: 'value1', key2: 'value2' });
    ```

- **store.getAll([fillObj])**
    一次取得多筆資料
    ```
    store.getAll();
    ```

- **store.transact(key, fn[, alt])**
    針對特定儲存資料進行操作及處理
    ```
    store.transact('myKey', (currentValue) => {
      currentValue.age = 30;
    });
    ```

- **store.clear()**
    如果有使用namespace的API建立儲存空間，則清除該儲存空間的所有資料。
    如果沒有則清除所有的localStorage的資料。
    ```
    const myStore = store.namespace('myApp');
    myStore.clear(); // 只會清除 'myApp' 命名空間下的數據
    ```

- **store.has(key)**
    檢查指定有儲存資料存在 回傳為boolean
    ```
    const exists = store.has('myKey');
    ```

- **store.remove(key[, alt])**
    移除指定key的儲存資料
    ```
    // 假設 'someKey' 不存在於存儲中
    var result = store.remove('someKey','defaultValue');

    // 由於 'someKey' 不存在，所以 result 將會是'defaultValue'
    console.log(result); // 輸出: 'defaultValue'
    ```

- **store.each(fn[, fill])**
    歷遍所有儲存的資料
    ```
    store.each(function(key, value) {
        console.log(key, ':', value);
    });
    ```
- **store.add(key, data[, replacer])**
    ```
    // 假設原始值是一個數組
    store.set('myArray', [1, 2, 3]);
    store.add('myArray', [4, 5]);
    
    // 現在 'myArray' 是 [1, 2, 3, 4, 5]
    ```

- **store.keys([fillList])**
    ```
    const storedKeys = store.keys();
    console.log(storedKeys); // 這將顯示類似於 ["key1", "key2"] 的輸出
    ```

- **store.size()**
    ```
    const numberOfKeys = store.size();
    console.log(numberOfKeys); // 這將顯示存儲資料的數量，例如 2
    ```

- **store.clearAll()**
    清除所有儲存在localStorage的資料
    ```
    store.clearAll();
    ```

### sessionStorage
store2除了可以操作localStorage外，也有提供sessionStorage的操作。操作方法也與localStorage差不多，只需要在使用的API前加入session即可。
```
store.session.set('key', 'value');
```

[npm連結](https://www.npmjs.com/package/store2)