ionic3.x开发之LocalStorage

LocalStorage介绍:

  • LocalStorage 生命周期是永久,数据是没有过期时间的,只要它没有被删除,就会永久地储存在 Storage 中。
  • sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。
  • 相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息
  • LocalStorage 和 SessionStorage 的存储空间只有 5MB,请不要存储大量的数据。
  • storage事件:当存储的storage数据发生变化时都会触发它,Storage 事件可以使用 W3C 标准的注册事件方法 addEventListenter 进行注册监听。
  • 建议不要使用localStorage方式存储敏感信息

LocalStorage服务封装:

命令创建LocalStorage服务:

ionic g provider localStorage
代码如下:
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';

/*
  Generated class for the LocalStorageProvider provider.

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/
@Injectable()
export class LocalStorageProvider {
  public static  STATION_INFO="station_info";
  constructor(public http: HttpClient) {
    console.log('Hello LocalStorageProvider Provider');
  }

  //存储
  set(key,value){
    console.log(">>>>>>存储<<<<<<<");
    console.log("key",key);
    console.log("value",value);
    localStorage.setItem(key,JSON.stringify(value)); //对象转换成字符串并存储,key存在时更新
  }

  //获取
  get(key){
    console.log(`get----------->${localStorage.getItem(key)}`);
    return JSON.parse(localStorage.getItem(key)); //字符串转换成对象并返回,key不存在,返回null
  }

  //移除
  remove(key){
    localStorage.removeItem(key);//移除key后,对应的值是null
  }

  //清除所有-----慎用!(执行的后果是会清除所有localStorage对象保存的数据)
  clear(){
    localStorage.clear();
  }

  //获取键值对的个数,可根据索引取出key和value
  getLength(){
    console.log(localStorage.length);
    for(var i=0;i exp) {
      console.log('信息已过期');
    } else {
      var dataObjDatatoJson = JSON.parse(dataObj.data)
      return dataObjDatatoJson;
    }
  }
}
使用方法;
1.在app.module.ts中导入并添加到providers:

import { LocalStorageProvider } from '../providers/local-storage/local-storage';


2.在需要的地方使用:

import { LocalStorageProvider } from './../local-storage/local-storage';
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';

/*
  Generated class for the UserStorageProvider provider.

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/
@Injectable()
export class UserStorageProvider {

  constructor(private storage:LocalStorageProvider) {

  }
  saveUser(userInfo) {
    console.log(">>>>>saveUser userInfo : " + userInfo);
    this.storage.set("userInfo", userInfo);
  }
  getCurrentUser() {
    return this.storage.get("userInfo");
  }
  removeUser(){
    this.storage.remove("userInfo");
  }
}

你可能感兴趣的:(ionic3.x开发之LocalStorage)