基于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 相关文章推荐
ext实现完整的登录代码
Aug 08 Javascript
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
Jun 04 Javascript
Java 正则表达式学习总结和一些小例子
Sep 13 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
Jul 18 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
Mar 24 Javascript
Laravel中常见的错误与解决方法小结
Aug 30 Javascript
纯JS实现可拖拽表单的简单实例
Sep 02 Javascript
node.js路径处理方法以及绝对路径详解
Mar 04 Javascript
Vue项目添加动态浏览器头部title的方法
Jul 11 Javascript
js中值引用和地址引用实例分析
Jun 21 Javascript
JS 自执行函数原理及用法
Aug 05 Javascript
在vue项目中封装echarts的步骤
Dec 25 Vue.js
微信小程序实现下拉刷新和轮播图效果
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
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
php include类文件超时问题处理
2015/02/06 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
Python装饰器用法实例分析
2019/01/14 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
日常奢侈品,轻松购物:Verishop
2019/08/20 全球购物
什么是接口(Interface)?
2013/02/01 面试题
简历中自我评价怎么写
2014/02/12 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
《在家里》教后反思
2014/03/01 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
财产公证书格式
2014/04/10 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
干部考察材料范文
2014/12/24 职场文书
企业安全生产检查制度
2015/08/06 职场文书
员工旷工检讨书
2015/08/15 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
vue项目支付功能代码详解
2022/02/18 Vue.js