欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

NodeJS开发学习之JS本地保存数据的几种方法介绍

程序员文章站 2022-07-10 12:54:21
1.cookie 这个恐怕是最常见也是用得最多的技术了,也是比较古老的技术了。cookie优点很多,使用起来很方便 但它的缺点也很多: 比如跨域访问问题;无法保存太大的数据(最大仅为4kb);本地保...

1.cookie

这个恐怕是最常见也是用得最多的技术了,也是比较古老的技术了。cookie优点很多,使用起来很方便

但它的缺点也很多:

比如跨域访问问题;无法保存太大的数据(最大仅为4kb);本地保存的数据会发送给服务器,浪费带宽 等等;

代码如下
    function setcookie(name, value) {
        var key = '';
        var days = 2;
        var exp = new date();
        var domain = "";
        exp.settime(exp.gettime() + days * 24 * 60 * 60 * 1000);
        if (key == null || key == "") {
            document.cookie = name + "=" + encodeuri(value) + ";expires=" + exp.togmtstring() + ";path=/;domain=" + domain + ";";
        }
        else {
            var namevalue = getcookie(name);
            if (namevalue == "") {
                document.cookie = name + "=" + key + "=" + encodeuri(value) + ";expires=" + exp.togmtstring() + ";path=/;domain=" + domain + ";";
            }
            else {
                var keyvalue = getcookie(name, key);
                if (keyvalue != "") {
                    namevalue = namevalue.replace(key + "=" + keyvalue, key + "=" + encodeuri(value));
                    document.cookie = name + "=" + namevalue + ";expires=" + exp.togmtstring() + ";path=/;domain=" + domain + ";";
                }
                else {
                    document.cookie = name + "=" + namevalue + "&" + key + "=" + encodeuri(value) + ";expires=" + exp.togmtstring() + ";path=/;" + domain + ";";
                }
            }
        }
    }

    function getcookie(name) {
        var namevalue = "";
        var key = "";
        var arr, reg = new regexp("(^| )" + name + "=([^;]*)(;|$)");
        if (arr = document.cookie.match(reg)) {
            namevalue = decodeuri(arr[2]);
        }
        if (key != null && key != "") {
            reg = new regexp("(^| |&)" + key + "=([^(;|&|=)]*)(&|$)");
            if (arr = namevalue.match(reg)) {
                return decodeuri(arr[2]);
            }
            else return "";
        }
        else {
            return namevalue;
        }
    }

2.使用sessionstorage、localstorage

localstorage:

是一种你不主动清除它,它会一直将存储数据存储在客户端的存储方式,即使你关闭了客户端(),属于本地持久层储存

sessionstorage:

用于本地存储一个会话(session)中的数据,一旦会话关闭,那么数据会消失,比如刷新。

有时候,我们需要将数据存储到sessionstorage和localstorage中,这样做的好处有:

1 缓存数据

2 减少对内存的占用

但是,storage只能存储字符串的数据,对于js中常用的数组或对象却不能直接存储。

它能保存更大的数据(ie8上是10mb,chrome是5mb),同时保存的数据不会再发送给服务器,避免带宽浪费。

localstorage存储方法(sessionstorage类似)

localstorage.name =’vanida;

localstorage[“name”]=’vanida’;

localstorage.setitem(“name”,”vanida”);

//这三种设置值方式是一样的;

localstorage获取值方法

var name = localstorage[“name”]

var name= localstorage.name

var name= localstorage.getitem(“name”);

//这三种获取值方式是一样的;

localstorage清除特定值方法

//清除name的值

localstorage.removeitem(“name”);

localstorage.name=”;

localstorage清除所有值方法

localstorage.clear()

localstorage只能存储字符串,如果需要存储对象,首先要转化为字符串。利用json.stringify();

var person = {name:”vanida”,”sex”:”girl”,”age”:25};

localstorage.setitem(“person”,json.stringify(person));

// localstorage.person=”{“name”:”vanida”,”sex”:”girl”,”age”:25}”

注意:json.stringify()中不要忘了“i”,stringify而不是stringfy!

然后取出person的对象你可以用json.parse();

person = json.parse(localstorage.getitem(“person”));

下面是单个简单的对象(数组类似)存贮,不考虑其他的多个的情况
var obj = { name:'jim' }; 
var str = json.stringify(obj); 

//存入 
sessionstorage.obj = str; 
//读取 
str = sessionstorage.obj; 
//重新转换为对象 
obj = json.parse(str);