基于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 相关文章推荐
如何实现浏览器上的右键菜单
Jul 10 Javascript
当前页禁止复制粘贴截屏代码小集
Jul 24 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
Jun 15 Javascript
JS实现网页表格自动变大缩小的方法
Mar 09 Javascript
JS实现的5级联动Select下拉选择框实例
Aug 17 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
Sep 17 Javascript
bootstrap快速制作后台界面
Dec 05 Javascript
详解JavaScript中this的指向问题
Jan 20 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
Sep 14 Javascript
微信小程序实现单列下拉菜单效果
Apr 25 Javascript
微信小程序自定义弹出层效果
May 26 Javascript
vue prop传值类型检验方式
Jul 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
PHP逐行输出(ob_flush与flush的组合)
2012/02/04 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
Google Dart编程语法和基本类型学习教程
2013/11/27 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
JS随机密码生成算法
2019/09/23 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
Python随机生成彩票号码的方法
2015/03/05 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
django框架中间件原理与用法详解
2019/12/10 Python
python字符串替换re.sub()实例解析
2020/02/09 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
详解Scrapy Redis入门实战
2020/11/18 Python
Python类class参数self原理解析
2020/11/19 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
感恩节活动方案
2014/01/27 职场文书
暑期政治学习心得体会
2014/09/02 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
2014年宣传工作总结
2014/11/18 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript