乐趣区

关于html5:localStorage和sessionStorage本地存储-打卡每天一份劝退技能

大家好,我是 魔王哪吒,很快乐意识你~~

哪吒人生信条:如果你所学的货色 处于喜爱 才会有弱小的能源撑持

每天学习编程,让你离幻想更新一步,感激不负每一份酷爱编程的程序员,不管知识点如许奇葩,和我一起,让那一颗到处流荡的心定下来,始终走上来,加油,2021加油!

不要胆怯做梦,然而呢,也不要光做梦,要做一个实干家,而不是空谈家,求真力行。

前言

如果这篇文章有帮忙到你,❤️关注 + 点赞❤️激励一下作者,接管好挑战了吗?

笔芯❤️~

知识点

应用 HTML5 中的 Web Storage API,能够在 客户端存储更多的数据 ,,能够 实现数据在多个页面中共享甚至是同步,对于简单的数据,能够应用 Web SQL Database API 来实现。

把握 localStorage 和 sessionStorage 存储形式,存储 JSON 对象的数据,应用 Web SQL Database 的基本操作。

Web Storage

Web Storage API 的属性,办法,事件。

cookie 可用于传递大量的数据,是一个在服务器和客户端 之间来回传送文本值的内置机制,服务器能够依据 cookie 追踪 用户在不同页面的访问信息。

cookie 的特点:

第一,大小的限度,cookie 的大小 限度 在 4KB 以内。

第二,带宽的限度,cookie 数据 会在服务器和浏览器 之间来回传送,所以拜访哪个页面,都会耗费网络的带宽。

第三,平安危险,因为 cookie 会频繁在网络中传送,所以在网络上是可见的,在不加密的状况下,是由平安危险的。

第四,操作简单,在客户端的浏览器中,应用 JavaScript 操作 cookie 数据是比较复杂的。

所以,如果对于 较小的数据 ,并且须要 在服务器和客户端之间 频繁传送时,才有 cookie 存在的意义。

什么是 web storage

Web Storage 能够在客户端保留大量的数据,Web Storage本地存储的劣势:

第一,存储容量大。

第二,零带宽。Web Storage 中的数据仅仅存储在本地,不会与服务器产生任何交互行为,不存在网络带宽的占用问题。

第三,编程接口。提供了一套丰盛的接口,使得数据操作更加不便。

第四,独立的存储空间。每个域都有独立的存储空间,各个存储空间是齐全能独立的,不会造成数据的凌乱。

localStorage 和 sessionStorage

Web Storage 本地存储 包含 sessionStorage 会话存储 和 localStorage 本地存储。

cookie 和 session 齐全是服务器端能够操作的数据,sessionStorage 和 localStorage 齐全是浏览器端操作的数据。

cookie 和 session 齐全继承同一个 Storage API, 所以 sessionStorage 和 localStorage 的编程接口是一样的。

sessionStorage 和 locatlStorage 区别在于 数据存在 工夫范畴 页面范畴

sessionStorage: 数据只 保留到存储它的窗口或标签敞开时,数据在构建它们的窗口或标签内也可见

localStorage: 数据的生命周期比窗口或浏览器的生命周期长,数据可被同源的每个窗口或者标签共享。

监测是否反对 Web Storage

示例:

function CheckStorageSupport() {
 // 监测 sessionStorage
 if(window.sessionStorage) {console.log(“浏览器反对 sessionStorage”);
 }else{console.log("浏览器不反对 sessionStorage");
 }
 
 // 监测 localStorage
 if(window.localStorage) {console.log("浏览器反对 localStorage");
 }else {console.log("浏览器不反对 localStorage");
 }
}

设置和获取 Storage 数据

保留数据到sessionStorage

window.sessionStorage.setItem("key”,"value");

setItem()示意保留数据的办法

sessionStorage 中获取数据:

value = window.sessionStorage.getItem("key");

getItem()为获取数据的办法

保留数据的写法:

window.sessionStorage.key = "value";

window.sessionStorage["key"] = "value"

获取数据的办法更加间接:

value = window.sessionStorage.key;

value = window.sessionStorage["key"]

应用 sessionStorage 和 localStorage

示例:

function DaDa() {window.localStorage.setItem("localKey", "localVlaue");
 
 // 获取
 console.log(window.localStorage.getItem("localKey"));
 
 window.sessionStorage.setItem("sessionKey", "sessionValue");
 
 // 获取
 console.log(window.sessionStorage.getItem("sessionKey"));
}

Storage 接口

示例:

interface Storage{
 readonly attribute unsigned long length;
 DOMString ? key(unsigned long index);
 getter DOMString getItem(DOMString key);
 setter creator void setItem(DOMString key, DOMString value);
 deleter void removeItem(DOMString key);
 void clear();}
  1. length属性,示意以后 storage 对象中存储的键 / 值对的数量。

Storage对象是同源的,length属性只能反映同源的键 / 值对数量

  1. key办法,获取指定地位的键。
  2. getItem办法,依据键返回相应的数据值。
  3. setItem办法,将数据存入指定键对应的地位。
  4. removeItem办法,从存储对象中移除指定的键 / 值对。
  5. clear办法,革除 Storage 对象中所有的数据,如 Storage 对象是空的,则不执行任何操作。

应用 Storage 对象保留页面的内容

示例:

// 保留数据到 sessionStorage

function SaveStorage(frm) {
 var storage = window.sessionStorage;
 
 storage.setItem("name",frm.name.value);
 
 storage.setItem("age", frm.age.value);
}

遍历显示 sessionStorage 中的数据

function Show(){
 var storage = window.sessionStorage
 var result = "";
 for(var i=0; i<storage.length; i++){var key = storage.key(i);
  var value = storage.getItem(key);
  result += key + ":" + value + ";";
 }
}

存储 JSON 对象的数据

Storage 是以字符串保留数据的,所以在保留 JSON 格局的数据之前,须要把 JSON 格局的数据转化为字符串,这个操作叫 序列化

应用 JSON.stringify() 序列化 json 格局的数据为字符串数据:

var dada = JSON.stringify(jsonObject);

把数据反序列化为 JSON 格局:

var jsonObject = JSON.parse(stringData);

web Storage建设一套会在数据更新时触发的事件告诉机制,无论监听的窗口是否存储过该数据,只有与执行存储的窗口是同源的,都会触发 web Storage 事件。

window.addEventListener("storage", EventHandle, true);

StorageEvent事件接口:

interface StorageEvent:Event {
 readonly attribute DOMString key;
 readonly attribute DOMString ? oldValue;
 readonly attribute DOMString ? newValue;
 readonly attribute DOMString ? url;
 readonly attribute Storage? storageArea;
}

key属性:蕴含了存储总被更新或删除的键;oldValue属性:蕴含了更新前键对应的数据。

newValue属性:蕴含了更新后的数据;url属性:指向 Storage 事件的发生源。

storageArea属性:该属性是一个援用,指向值产生扭转的localStorage 或 sessionStorage

web SQL Database

Web SQL Database 应用的是 SQLite 数据库,容许应用程序通过一个异步的 JavaScript 接口拜访数据库。SQLite 是一款轻型的数据库。

  1. openDatabase() 办法,应用现有的数据库或新建数据库来创立数据库对象。
  2. transaction() 办法,容许设计者管制事务的提交或回滚。
  3. executeSql() 办法,用于执行实在的 SQL 查问。

操作 Web sql 数据库

var db = openDatabase("TestDB", "1.0", "测试", xxxx)

共 5 个参数:

  1. 数据库名
  2. 版本号
  3. 数据库的形容
  4. 数据库的大小
  5. 创立回调函数

创立数据表

transaction()办法用于进行事务处理,executeSql()办法用于执行 sql 语句。

创立数据表:

db.transaction(function (tx) {tx.executeSql('CREATE TABLE IF NOT EXISTS UserName (id unique, Name)');
});

transaction()办法传递给回调函数的 tx 是一个 transaction 对象,应用 transaction 对象的 executeSql() 办法能够执行 SQL 语句。

增加数据到数据表:

db.transaction(function (tx){tx.executeSql('INSERT INTO UserName (id,Name) VALUES(1,'dada'));
 tx.executeSql('INSERT INTO UserName (id,Name) VALUES (2,'dadada'));
});

读取数据库中的数据:

db.transaction(function (tx){tx.executeSql('SELECT * FROM UserName', [], function(tx, resultes){
  var len = results.rows.length;
  for (var i=0; i<len; i++){console.log(results.rows.item(i).Name);
  }
 },null);
});

html5 几种存储模式

  1. 本地存储 -localStorage, sessionStorage
  2. 离线缓存 application cache
  3. indexedDB 和 webSQL

localStorage 和 sessionStorage

  • localStorage永恒存储,永不生效除非手动删除
  • sessionStorage浏览器从新关上后就隐没了

大小,每个域名是5M,cookie 第一是由大小限度,大略 4K 左右,第二,ie6 域名下有个数限度。

HTML API

在浏览器的 API 有两个,localStorage 和 sessionStorage

window对象中:localStorage对应 window.localStoragesessionStorage 对应window.sessionStorage

localStorage只有在雷同的协定、雷同的主机名、雷同的端口下,就能读取或批改到同一份 localStorage 的数据。

sessionStoragelocalStorage 更严格,除了协定、主机名、端口外,还要求在同一窗口下

办法及含意:

setItem(‘key’,‘value’)    贮存数据

getItem(‘key’)    读取数据

removeItem(‘key’)    删除数据

clear()    清空数据

应用办法详解:

// 贮存数据
window.localstage.setItem('key','value')
// key : 数据的名称
// value : 数据
// 所存储的是数据必须是 string 类型

// 读取数据
window.localstage.getItem('key')
// key : 数据的名称
// 如果数据不存在,返回 null (个别用它做判断)

// 删除数据
window.localstage.removeItem('key')
// key : 数据的名称
// 删除本地存储中的指定数据

// 清空数据
window.localstage.clear()
// 清空本地存储中的所有数据

什么是 localStorage 和 sessionStorage?

localStorage(长期存储)、sessionStorage(会话存储)是 H5 中的本地 web 存储提供的两个接口, 相当于前端一个小型的本地数据库,用于在本地存储一些不敏感的数据,隶属于 window 对象。

localStorage 和 sessionStorage 的异同?

相同点: 两者的 API 完全相同,都是在浏览器端存储数据。

不同点:

  1. localStorage存储的数据是永久性数据, 页面刷新,即便浏览器重启,甚至操作系统重启也不会失落,并且存储的数据在同源(协定、域名、端口号统一)下的标签页和 window 窗口之间共享。
  2. sessionStorage存储的数据有些刻薄,页面刷新依然无效, 选项卡敞开时数据失落。然而在雷同标签页关上的多个 iframe 之间数据能够共享(同源的状况下)。

两者都是在浏览器端存储数据,localStorage存储的数据被限度在同源下, 可跨窗口通信, 不可跨浏览器, 跨域;sessionStorage存储的数据被限度在标签页(页卡敞开失落)。

localStorage 的局限

局限:

1. 各个浏览器的反对的大小不一样,业界认为是5M, 并且在不同的浏览器不同版本反对度不一样

2.localStorage的数据不能被爬虫抓取

近期举荐

  • HTML5 中的拖放性能
  • Vue.js 口试题解决业务中常见问题
  • 达达前端集体 web 分享 92 道 JavaScript 面试题附加答复
  • 【思维导图】前端开发 - 坚固你的 JavaScript 常识体系
  • 【图文并茂,点赞珍藏哦!】重学坚固你的 Vuejs 常识体系
  • 连肝 7 个早晨,总结了计算机网络的知识点!(共 66 条)

❤️关注 + 点赞 + 珍藏 + 评论 + 转发❤️,原创不易,激励笔者创作更好的文章

点赞、珍藏和评论

我是 Jeskson(达达前端),感激各位人才的: 点赞、珍藏和评论 ,咱们下期见!(如本文内容有中央解说有误,欢送指出☞ 谢谢,一起学习了)

咱们下期见!

文章继续更新,能够微信搜一搜「程序员哆啦 A 梦」第一工夫浏览,回复【材料】有我筹备的一线大厂材料,本文 http://www.dadaqianduan.cn/#/ 曾经收录

github收录,欢送Star:https://github.com/webVueBlog/WebFamily

退出移动版