Hướng dẫn localstorage setitem javascript - bộ lưu trữ cục bộ javascript

Hướng dẫn localstorage setitem javascript - bộ lưu trữ cục bộ javascript

Đã đăng vào thg 9 20, 2019 9:12 SA 3 phút đọc 3 phút đọc

Local Storage là gì?

Tương tự như cookie, HTML5 hỗ trợ LocalStorage là một loại lưu trữ web cho phép các trang web và ứng dụng Javascript lưu trữ và truy cập dữ liệu ngay trong trình duyệt mà không có ngày hết hạn. Hay dữ liệu được lưu trữ trong trình duyệt sẽ tồn tại ngay cả sau khi cửa sổ trình duyệt đã bị đóng, Dữ liệu chỉ mất khi bạn sử dụng chức năng clear history của trình duyệt, hoặc bạn sử dụng localStorage API để xóa

Hạn chế của LocalStorage

  • Thông tin trong LocalStorage chỉ được lưu trữ trong trình duyệt của người dùng (Không lưu trên server) , localStorage được sandbox theo domain name của ứng dụng web. Hay nói cách khác mỗi trang web sẽ có 1 LocalStorage riêng và không thể truy cập đến LocalStorage khác. Đây có thể xem là ưu điểm cũng có thể là nhược điểm của LocalStorage.

  • Không nên lưu các dữ liệu nhạy cảm của người dùng vào LocalStorage: LocalStorage chỉ được lưu ở phía client nên có thể có 1 số lỗi bảo mật mà hacker có thể tận dụng để lấy ra dữ liệu của người dùng từ Local Storage như Cross Site Scripting (XSS), DNS spoofing attacks. VD: Thông qua field input của trang, hacker có thể nhập vào 1 đoạn mã script như

    localStorage.setItem('list_departments', JSON.stringify([1,2]))
    
    6 Từ đó có thể lấy ra dữ liệu của người dùng được lưu trong LocalStorage.

  • Các trình duyệt hỗ trợ:

    Trình duyệtChrome (4.0+)Firefox (3.5)Safari (4.0)IE (8.0+)
    LocalStorage 10MB 10MB 5MB 10MB
      - Ngoài ra ta có thể kiểm tra trình duyệt có hỗ trợ localStorage bằng cách:
      ```
      if (storageAvailable('localStorage')) {
          // Trình duyệt này hỗ trợ LocalStorage
      }
      else {
          // :( trình duyệt không hỗ trợ LocalStorage
      }
      ```
    

5MB

Kiểm tra LocalStorage

Hướng dẫn localstorage setitem javascript - bộ lưu trữ cục bộ javascript

Thông qua dev tool ta có thể vào tab Application và kiểm tra Local Storage của trang hiện tại ( Chrome)

  • Sử dụng LocalStorage với JavaScript

Để sử dụng LocalStorage, ta sẽ có 4 method chính: setItem(): Gán dữ liệu vào LocalStorage getItem(): Lấy ra dữ liệu từ LocalStorage removeItem(): Xóa dữ liệu khỏi LocalStorage clear(): Xóa toàn bộ dữ liệu của LocalStorage

  • 1. setItem()
  • Để gán 1 biến nào đó vào LocalStorage ta chỉ cần dùng lệnh:
    localStorage.setItem('list_departments', JSON.stringify([1,2]))
    
    7
  • Với key là tên biến để ta truy xuất và value là giá trị biến truyền vào.
localStorage.setItem('list_departments', JSON.stringify([1,2]))
  • Chú ý: LocalStorage chỉ cho phép chúng ta lưu biến với kiểu String, vì vậy để lưu Object hoặc Array ta có thể convert sang Json.

Khi cần sử dụng chỉ cần JSON.parse() để convert về giá trị ban đầu.

  • 2. getItem()

Để lấy ra được dữ liệu trong localStorage của trình duyệt ta dùng method: localStorage.setItem('list_departments', JSON.stringify([1,2])) 8

  • 3. removeItem()
window.localStorage.removeItem('key')

Để xóa 1 item khỏi localStorage ta sẽ sử dụng method: removeItem()

  • 4. clear()
window.localStorage.clear();

Để xóa toàn bộ các dữ liệu trong LocalStorage của domain hiện tại.

Tổng kết:

Thông qua bài viết mình mong rằng mọi người có thể có cái nhìn tổng quát về Local Storage cũng như các kiến thức cơ bản để có thể sử dụng Locak Storage đúng cách. M.n nếu thắc mắc, góp ý hoặc chia sẽ thêm những kiến thức liên quan có thể comment bên dưới nhé. Cảm ơn các bạn đã đọc.

Lưu trữ dữ liệu trên trình duyệt là điều mà chúng ta vẫn thường hay làm khi xây dựng ứng dụng web. Thông thường, chúng ta cần lưu trữ một số dữ liệu tạm thời liên quan đến trải logic xử lý hay giúp cho trải nghiệm người dùng được tốt hơn. Để làm được điều này, chúng ta có thể sử dụng localStorage

Với localStorage, chúng ta lưu trữ dữ liệu trên trình duyệt dưới dạng string. Nó là một phương tiện lưu trữ dữ liệu thông qua các ***"key"***, cho phép chúng ta lấy dữ liệu thông qua các "key" này. Nếu một phần dữ liệu không phải là một chuỗi, thì nó sẽ được chuyển đổi thành chuỗi trước khi được lưu trữ."key" này. Nếu một phần dữ liệu không phải là một chuỗi, thì nó sẽ được chuyển đổi thành chuỗi trước khi được lưu trữ.

Saving Data

Chúng ta có thể sử dụng phương thức

localStorage.setItem('list_departments', JSON.stringify([1,2]))
9 để lưu dữ liệu vào bộ nhớ cục bộ của trình duyệt. Sẽ cần hai đối số cho quá trình này. Đối số đầu tiên là một chuỗi là khóa của dữ liệu và đối số thứ hai là một chuỗi có giá trị của khóa tương ứng mà chúng ta đã chuyển vào đối số thứ nhất.

Nghe có vẻ lòng vòng, nhưng nếu nhìn vào ví dụ dưới đây chúng ta sẽ dễ dàng nắm bắt dc:

  localStorage.setItem('foo', 'bar');
  
  // foo là key
  // bar là giá trị ứng với key

Có thể kiểm tra xem nó đã được lưu chưa bằng cách trỏ vào tab Apllication của trình duyệt, kiểm tra mục localStorage

Bạn cũng có thể viết...

  localStorage.foo = 'bar';

...để lưu trữ data

Ký hiệu "[ ]" cũng có thể hoạt động để gán giá trị cho bộ nhớ cục bộ. Ví dụ, chúng ta có thể viết...

  localStorage['foo'] = 'bar';

Để lưu trữ data vào localStorage với khoá 'foo' và giá trị là 'bar'

Saving object data

Nếu như bạn muốn lưu trữ một object, chúng ta sẽ lấy [object Object] làm giá trị. Để lưu nội dung, ta sẽ sử dụng phương thức JSON.stringify. Ví dụ, thay vì viết:

  localStorage.setItem('foo', {foo: 'bar'});

... ta sẽ viết là:

  localStorage.setItem('foo', JSON.stringify({foo: 'bar'}));

Giờ đây, {“foo” : ”bar”} là một giá trị được lưu trong localStorage với khoá

window.localStorage.removeItem('key')
0

Repeated calling

Nếu chúng ta gọi lặp lại phương thức

localStorage.setItem('list_departments', JSON.stringify([1,2]))
9 với cùng một key, thì giá trị hiện tại của key sẽ bị ghi đè. Ví dụ nếu như ta viết:

  localStorage.setItem('foo', 1);
  localStorage.setItem('foo', 2);

Sau đó, giá trị của khoá

window.localStorage.removeItem('key')
0 sẽ là 2 vì nó giá trị cuối cùng được set ứng với khoá
window.localStorage.removeItem('key')
0 được lưu.

Getting Data

Ta có thể lấy dữ liệu bằng phương thức

window.localStorage.removeItem('key')
4 hoặc sử dụng ký hiệu
window.localStorage.removeItem('key')
5 để lấy dữ liệu như bất kỳ đối tượng nào.
window.localStorage.removeItem('key')
4 sẽ lấy ra giá trị ứng với key được lưu trong localStorage. Nó sẽ trả về một chuỗi chứa giá trị hoặc
window.localStorage.removeItem('key')
7 nếu như không có

Ta có thể viết:

localStorage.setItem('list_departments', JSON.stringify([1,2]))
0

Ta sẽ nhận được giá trị ứng với key

window.localStorage.removeItem('key')
0, nếu như không có, ta sẽ nhận được giá trị
window.localStorage.removeItem('key')
7

Ta cũng có thể viết theo các cú pháp khác để lấy được giá trị ứng với khoá chỉ định. Ví dụ như:

localStorage.setItem('list_departments', JSON.stringify([1,2]))
1

Ngoài ra còn có một phương pháp để lấy tên của khóa trong localStorage với index của nó. Giá trị truyền vào là một số nguyên ứng với vị trí cần lấy. Vị trí đầu tiên được đánh số 0. Ví dụ:

localStorage.setItem('list_departments', JSON.stringify([1,2]))
2

Sẽ trả về tên của khoá đứng ở vị trí số 2 trong localStorage.

Removing a Single Entry in Local Storage

Ta có thể xoá một mục trong localStorage bằng cách cung cấp key của mục đó cho phương thức

window.localStorage.clear();
0.

Ví dụ, ta muốn xoá một entry với key

window.localStorage.clear();
1, ta sẽ viết:

localStorage.setItem('list_departments', JSON.stringify([1,2]))
3

Đoạn code trên sẽ thực thi việc xoá một phần tử trong localStorage với key name là

window.localStorage.clear();
1

Ngoài ra, ta có thể sử dụng

window.localStorage.clear();
3 để xoá phần tử thông qua key name. Ví dụ, ta có thể xoá một entry với key
window.localStorage.clear();
1 bằng cú pháp:

localStorage.setItem('list_departments', JSON.stringify([1,2]))
4

Clearing Local Storage

Ta có thể sử dụng phương thức

window.localStorage.clear();
5 để xoá toàn bộ entry trong localStorage

localStorage.setItem('list_departments', JSON.stringify([1,2]))
5

Bằng cách sử dụng cú pháp này, toàn bộ dữ liệu của localStorage trên trình duyệt sẽ bị xoá bỏ hoàn toàn

Lời kết

Trên đây là một số chia sẻ về localStorage và cách sử dụng nó. LocalStorage có tính ứng dụng cao, thường xuyên được sử dụng trong các dự án. Hi vọng bài viết này của mình sẽ giúp đỡ các bạn phần nào trong việc tiếp cận với localStorage

Tham khảo: https://medium.com/better-programming/use-localstorage-to-store-data-on-the-browser-d10f8363dda5