ionic3.x开发之LocalStorage

作者: 星辰大海_王 | 来源:发表于2018-07-29 18:56 被阅读6次

    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<localStorage.length;i++){
    
          var name = localStorage.key(i)​;
          console.log(name);
          var value = localStorage.getItem(name);​
          console.log(value);
    
     }
        return localStorage.length;
      }
    
      //存过期时间的方法
      setForExp(key, value) {
        var curTime = new Date().getTime();
        localStorage.setItem(key, JSON.stringify({ data: value, time: curTime }));
      }
    
      //指定过期时间的get方法;1000*60:过期时间为1分钟
      getWithExp(key, exp) {
        var data = localStorage.getItem(key);
        var dataObj = JSON.parse(data);
        if (new Date().getTime() - dataObj.time > 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';


    QQ20180729-185137@2x.png

    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

        本文链接:https://www.haomeiwen.com/subject/djltvftx.html