zoukankan      html  css  js  c++  java
  • H5中的本地存储

    什么是本地存储?

    HTML5提供了两种在客户端存储数据的新方法:

    localStorage - 没有时间限制的数据存储 (持久化本地)

    sessionStorage - 针对一个 session 的数据存储 (内存方式存储)

    它可以把一些信息存在本地(客户)端,一种让网页可以把键值对存储在用户浏览器客户端的方法。

    它有哪些特点了?

       localStorage是没有失效时间的,数据便一直存储在用户的客户端中,不会因为你打开新网站,刷新页面,乃至关闭你的浏览器而消失。

       在移动设备上,由于大部分浏览器都支持web storage特性,因此在android和ios等智能手机上的web浏览器都能正常使用该特性。

    为什么要学习本地存储?

    cookie的缺陷是非常明显的

    1、数据大小:作为存储容器,cookie的大小限制在4KB。

    2、对于现在复杂的业务逻辑需求,4KB的容量除了存储一些配置字段还简单单值信息,对于绝大部分开发者来说真的不知指望什么了。

    3、安全性问题:由于在HTTP请求中的cookie是明文传递的(HTTPS不是),带来的安全性问题还是很大的。

    4.、网络负担:我们知道cookie会被附加在每个HTTP请求中,在HttpRequest 和HttpResponse的header中都是要被传输的,所以无形中增加了一些不必要的流量损失。

    5、localstorage是移动开发必不可少的技术点。

    怎样检测浏览器是否支持本地存储?

    在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,从名字应该可以很清楚的辨认二者的区别,前者是一直存在本地的,后者只是伴随着session,窗口一旦关闭就没了。二者用法完全相同,这里以localStorage为例。只要window.localStorage返回值为true,则浏览器支持本地存储。代码如下:

    window.onload = function() {
        if(window.localStorage) {
            alert('支持');
        } else {
            alert('不支持');
        }
    }

    LocalStoreAPI

    length 唯一的属性,只读,用来获取storage内的键值对数量
    key 根据index获取storage的键名
    getItem 根据key获取storage内的对应value
    setItem 为storage内添加键值对
    removeItem 根据键名,删除键值对
    clear

    清空storage对象

    window.onload = function() {
        //1、获取本地存储对象
        var ls = window.localStorage;
        //2、往本地存储中存储数据
        ls.setItem("name", "TV");
        //3、获取本地存储的数据个数
        console.log(ls.length);
        //4、获取本地存储中健对应的值
        console.log(ls.getItem("name"));
        //5、遍历本地存储中健值对
        for(var i = 0; i < ls.length; i++) {
            alert("key:" + ls.key(i) + "   value:" + ls.getItem(ls.key(i)));
        }
        //6、清除本地存储中所有的数据
        ls.clear();
        //7、清除本地存储中指定的数据
        ls.removeItem("counts");
    }

    存储JSON数据

    localStorage和sessionStorage只能存储字符串类型,对于复杂的对象可以使用JSON来处理,可以直接调用JSON.stringify()将其转为字符串,读取出来后调用JSON.parse()将字符串转为json格式。

    /**
     * 定义json对象
     */
    var stu1 = {
        'name': 'dream',
        'age': 32,
        'password': '123456'
    };
    /**
     * 把json对象转换成字符串进行存储
     * JSON.stringify() json转换字符串
     */
    localStorage.setItem("stu1", JSON.stringify(stu1));
    // 存放到sessionStorage中
    sessionStorage.setItem("stu1", JSON.stringify(stu1));
    /**
     * 读取JSON数据
     * 先把字符串转换成json 在进行取值
     */
    var stu = JSON.parse(localStorage.getItem("stu1"));
    console.log(stu.name);
    // 从session中读取
    var stuSession = JSON.parse(sessionStorage.getItem("stu1"));
    console.log(stuSession.name);
  • 相关阅读:
    BigDecimal用法详解
    Spring IOC的配置使用
    Spring IOC容器基本原理
    Spring IOC基础
    Spring基础
    Spring概述
    win7+jdk环境变量配置
    订单状态
    项目经理与项目管理整理
    top命令按内存和cpu排序
  • 原文地址:https://www.cnblogs.com/yaowan/p/7218726.html
Copyright © 2011-2022 走看看