nodejs将获得的数据保存到本地可以使用Cookie进行数据保存或使用sessionStorage、localStorage进行数据保存。
使用Cookie保存
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;
}
}
使用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”,”sexs”:”girl”,”age”:25};
localStorage.setItem(“person”,jsON.stringify(person));
// localStorage.person=”{“name”:”vanida”,”sexs”:”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);