商品分類


JavaScript localStorage 基礎使用

2021-10-07 08:24

主機端儲存

  • Database
  • Storage
  • Memory

持久性紀錄

 

瀏覽器端儲存

  • cookie
  • localStorage
  • sessionStorage
比較表
特性 cookie localStorage sessionStorage
生命週期

可設定失效時間

預設是關閉瀏覽器後失效

除非被清除,否則永久保存 關閉頁面或瀏覽器後被清除
大小 4KB 左右 一般為 5MB
與 Server 溝通

每次都會攜帶在 HTTP 中,保存過多數據會帶來效能問題

僅在瀏覽器保存,不參與 Server 溝通

 

溝通簡易流程圖

 

查看方式

 

設定

localStorage.setItem(key, value)
sessionStorage.setItem(key, value)

 

設定字串

localStorage.setItem('name', 'david')

 

設定陣列

let students = [];
students.push({name: 'David', age: 18})
students.push({name: 'John', age: 20})
localStorage.setItem('students', students)

查看後顯示 

[object Object],[object Object]

 

序列化

JSON.stringify()

修正

let students = [];
students.push({name: 'David', age: 18})
students.push({name: 'John', age: 20})
localStorage.setItem('students', JSON.stringify(students))

 

function 序列化?

var person = {
    name: 'David',
    age: 18,
    sayHi: function() { console.log('Hi') }
}

localStorage.setItem('person', JSON.stringify(person))

function 無法被序列化

 

取得

localStorage.getItem(key)
sessionStorage.getItem(key)

取回 students

localStorage.getItem('students')

查看發現取回後是字串

 

還原序列化資料

JSON.parse(localStorage.getItem('students'))

 

刪除

localStorage.removeItem(key)
sessionStorage.removeItem(key)

刪除 students

localStorage.removeItem('students')

 

實作範例

記憶功能的 TODO List


購物車

購物車無商品
  • NT$ {{ Utils . numberWithCommas(item . product . price) }} x {{ item . qty }} = NT$ {{ Utils . numberWithCommas(item . product . price * item . qty) }}
小計:
NT$ {{ Utils . numberWithCommas(cart . subtotal) }}
總計:
NT$ {{ Utils . numberWithCommas(cart . total) }}
購物車