基于bootstrap写的一点localStorage本地储存


Posted in Javascript onNovember 21, 2017

先给大家说下什么是localstorage

前几天在老项目中发现有对cookie的操作觉得很奇怪,咨询下来是要缓存一些信息,以避免在URL上面传递参数,但没有考虑过cookie会带来什么问题:

① cookie大小限制在4k左右,不适合存业务数据
② cookie每次随HTTP事务一起发送,浪费带宽

我们是做移动项目的,所以这里真实适合使用的技术是localstorage,localstorage可以说是对cookie的优化,使用它可以方便在客户端存储数据,并且不会随着HTTP传输,但也不是没有问题:

① localstorage大小限制在500万字符左右,各个浏览器不一致
② localstorage在隐私模式下不可读取
③ localstorage本质是在读写文件,数据多的话会比较卡(firefox会一次性将数据导入内存,想想就觉得吓人啊)
④ localstorage不能被爬虫爬取,不要用它完全取代URL传参
瑕不掩瑜,以上问题皆可避免,所以我们的关注点应该放在如何使用localstorage上,并且是如何正确使用。

摘要:

H5本地存储

在以前,我们想要存储一些数据,并且只是在前端使用,服务端并不会使用,我们只能存在cookie里,但是cookie会跟随请求头在客户端和服务端之间来回传递,而且cookie还有一些缺点,H5提供了webStorage的API用来做客户端的数据存储

cookie与webStorage的区别

  1. cookie有大小的限制,只能存储4kb,webStorage可以存储5Mb,cookie还有条数的限制
  2. cookie会跟随请求头在客户端和服务端之间传递,会影响带宽。
  3. cookie需要设置有效期,localStorage是永久保存,sessionStorage是会话保存,
  4. cookie可以设置作用path
  5. cookie的操作较为困难,webStorage的API较为容易
  6. cookie的兼容性比webStorage兼容性好

webStorage包含的存储方式

  1. localStorage :有效期是永远,永久保存;除非手动删除
  2. sessionStorage: 有效期是一次会话时间
  3. globalStorage、indexedDB、webSQL因为兼容性、实用性较差,所以,不使用

localStorage和sessionStorage 的使用方法(API)

  1. localStorage和sessionStorage的使用方法一样
  2. 增删改查

增/改: localStorage.setItem(key,value)/ localStorage.a = 1

查: length;key方法(index)得到对应的key getItem(key)/localStorage.a

删: removeItem(key)

清空: clear()

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<style>
 .panel-body input.form-control{
 width: 200px;
 }
</style>
<body>
 <div class="container">
 <div class="panel panel-primary insert">
 <div class="panel-heading">

 增加

 </div>
 <div class="panel-body">
 <label for="">key:</label>
 <input type="text" id="key" class="form-control">
 <label for="">value:</label>
 <input type="text" id="value" class="form-control">
 <button onclick="save()">save</button>
 </div>
 </div>
 <div class="panel panel-primary select">
 <div class="panel-heading">
 key-value-list:
 </div>
 <div class="panel-body">
 <button onclick="select()" class="btn btn-success">select</button>
 <button onclick="abc()" class="btn btn-warning">clear</button>
 <hr>
 <ul class="list-group">
 </ul>
 </div>
 </div>
 </div>
 </div>
 <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
 <script>
 function save(){
 var key = $(".insert #key").val()
 var value = $(".insert #value").val()
 localStorage.setItem(key,value)
 //select()
 }
 function select(){
 let str = ''
 for(var i = 0;i < localStorage.length;i ++){
 var key = localStorage.key(i)
 var value = localStorage.getItem(key)
 str +=`
 <li class="list-group-item clearfix">
 key: <span class="label label-primary key">${key}</span>    
 value: <span class="label label-primary value">${value}</span>
 <button data-key='${key}' class="btn btn-danger delete pull-right">delete</button>
 </li>
 `
 }
 $(".select ul").html(str)
 }
 function abc(){
 localStorage.clear()
 $(".select ul").html("")
 }
 $(".select ul").delegate(".delete",'click',function () {
 console.log(1)
 var key = $(this).data("key")
 localStorage.removeItem(key)
 $(this).parent().remove()
 })
 </script>
</body>

总结

以上所述是小编给大家介绍的基于bootstrap写的一点localStorage本地储存,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
让你的博文自动带上缩址的实现代码,方便发到微博客上
Dec 28 Javascript
jQuery获取对象简单实现方法小结
Oct 30 Javascript
JQUERY表单暂存功能插件分享
Feb 23 Javascript
Javascript打印局部页面实例
Jun 21 Javascript
js删除局部变量的实现方法
Jun 25 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
Aug 29 Javascript
使用JQ完成表格隔行换色的简单实例
Aug 25 Javascript
解析Vue2 dist 目录下各个文件的区别
Nov 22 Javascript
vue组件之间通信方式实例总结【8种方式】
Feb 22 Javascript
微信小程序引入Vant组件库过程解析
Aug 06 Javascript
layui数据表格 table.render 报错的解决方法
Sep 29 Javascript
JS猜数字游戏实例讲解
Jun 30 Javascript
微信小程序实现下拉刷新和轮播图效果
Nov 21 #Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
Nov 21 #Javascript
微信小程序实现tab和swiper切换结合效果
Jul 17 #Javascript
微信小程序实现tab切换效果
Nov 21 #Javascript
jQuery实现所有验证通过方可提交的表单验证
Nov 21 #jQuery
IntelliJ IDEA 安装vue开发插件的方法
Nov 21 #Javascript
值得收藏的vuejs安装教程
Nov 21 #Javascript
You might like
sony ICF-2010 拆解与改装
2021/03/02 无线电
如何将数据从文本导入到mysql
2006/10/09 PHP
PHP 验证码的实现代码
2011/07/17 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
PHP获取数组中某元素的位置及array_keys函数应用
2013/01/29 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
php实现数字补零的方法总结
2018/09/12 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
详解Angularjs filter过滤器
2016/02/06 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python pass详细介绍及实例代码
2016/11/24 Python
详解python实现线程安全的单例模式
2018/03/05 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
python如何快速生成时间戳
2020/07/21 Python
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
联强国际笔试题面试题
2013/07/10 面试题
历史系自荐信范文
2013/12/24 职场文书
爱心倡议书范文
2014/05/12 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
领导参观欢迎词
2015/01/26 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL