基于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 相关文章推荐
如何判断鼠标是否在DIV的区域内
Nov 13 Javascript
XML、HTML、CSS与JS的区别整理
Feb 18 Javascript
jquery实现简单的banner轮播效果【实例】
Mar 30 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
Sep 27 Javascript
JS常用算法实现代码
Nov 14 Javascript
jquery实现表单获取短信验证码代码
Mar 13 Javascript
Angular限制input框输入金额(是小数的话只保留两位小数点)
Jul 13 Javascript
vue中遇到的坑之变化检测问题(数组相关)
Oct 13 Javascript
微信小程序仿RadioGroup改变样式的处理方案
Jul 13 Javascript
通过实例学习React中事件节流防抖
Jun 17 Javascript
微信小程序文章详情页跳转案例详解
Jul 09 Javascript
详解Element-UI中上传的文件前端处理
Aug 07 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
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
Jquery submit()无法提交问题
2013/04/21 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
javascript正则表达式总结
2016/02/29 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
详解如何使用webpack打包Vue工程
2017/05/27 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python支持断点续传的多线程下载示例
2014/01/16 Python
python基础教程之缩进介绍
2014/08/29 Python
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
python实用代码片段收集贴
2015/06/03 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
葡萄牙语专业个人求职信
2013/12/10 职场文书
百度吧主申请感言
2014/01/12 职场文书
小学教师事迹材料
2014/01/13 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
关于读书的活动方案
2014/08/14 职场文书
清洁员岗位职责
2015/02/15 职场文书
python tkinter模块的简单使用
2021/04/07 Python
德劲DE1105机评
2022/04/05 无线电