localStorage: 方法存储的数据没有时间限制。
sessionStorage: 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。
localStorage、和sessionStorage的用法:(localStorage和sessionStorage都具有相同的操作方法,例如setItem、getItem、removeItem、clear)
class Store {
constructor (store) {
// 检测是否支持localstorage
if (!store) {
console.log('不支持localStorage')
return
}
this._store = store
}
/**
* @function 设置值
* @param {string} _k 必须参数,属性
* @param {any} _v 非必须参数,属性值
*/
setItem (_k, _v) {
if (!this._store) return
let kType = this.getType(_k)
if (kType === 'string') {
this._store.setItem(_k, this.filterValue(_v))
} else {
console.log('key只能为字符串!')
}
}
/**
* @function 获取值
* @param {string} _k 必须参数,属性
*/
getItem (_k) {
if (!this._store) return
let res
let kType = this.getType(_k)
if (kType === 'string') {
res = this._store.getItem(_k)
} else {
console.log('key只能为字符串!')
}
return res
}
/**
* @function 移除值
* @param {string} _k 必须参数,属性
*/
removeItem (_k) {
if (!this._store) return
let kType = this.getType(_k)
if (kType === 'string') {
res = this._store.removeItem(_k)
} else {
console.log('key只能为字符串!')
}
}
/**
* @function 移除所有
*/
clear () {
if (!this._store) return
this._store.clear()
}
/**
* @function 判断类型
* @param {any} para 必须参数,判断的值
*/
getType (para) {
let type = typeof para
if (type === 'number' && isNaN(para)) return 'NaN'
if (type !== 'object') return type
return Object.prototype.toString
.call(para)
.replace(/[\[\]]/g, '') // eslint-disable-line
.split(' ')[1]
.toLowerCase()
}
/**
* @function 过滤值
* @param {any} val 必须参数,过滤的值
*/
filterValue (val) {
let vType = this.getType(val)
let nullVal = ['null', 'undefined', 'NaN']
let stringVal = ['boolen', 'number', 'string']
if (nullVal.indexOf(vType) >= 0) return ''
if (stringVal.indexOf(vType) >= 0) return val
return JSON.stringify(val)
}
}
class LocalStorage extends Store {
constructor (store) { // eslint-disable-line
super(store)
}
WX_USER_ID = 'WX_USER_ID'
}
class SessionStorage extends Store {
constructor (store) { // eslint-disable-line
super(store)
}
WX_SSO_TITLE = 'WX_SSO_TITLE'
}
const lStorage = new LocalStorage(window.localStorage || localStorage)
const sStorage = new SessionStorage(window.sessionStorage || sessionStorage)
export {
lStorage,
sStorage
}
import { lStorage, sStorage } from './storage.js'
lStorage.setItem(lStorage.WX_USER_ID, ['val'])
lStorage.getItem(lStorage.WX_USER_ID) // ['val']
有时也用其复数形式 Cookies,指某些网站为了辨别用户身份,JavaScript对cookie的相关操作,设置cookie,读取cookie,删除cookie,判断cookie是否存在.......
在HTML5中有一个localStorage的新特性,它主要用于本地存储使用,目的是为了解决了cookie存储空间小的问题。本文将讲解:localStorage特点、localStorage的兼容、localStorage的使用等
在做接口测试时,经常会碰到请求参数为token的类型,但是可能大部分测试人员对token,cookie,session的区别还是一知半解
由于http是无状态的协议,这种特性严重阻碍了客户端与服务器进行动态交互,为了弥补http的不足,目前实现会话跟踪的常用技术方法:cookie、session、url重写、隐藏input、ip地址。
localStorage 与 sessionStorage具体适用于什么样的业务场景?如何维护本地储存?如何进行版本控制?碰到禁止本地缓存的情况下怎么解决这个问题?
在ECMAscript中,变量可以存放两种类型的值,即原始值和引用值。原始变量及他们的值储存在栈中,当把一个原始变量传递给另一个原始变量时,是把一个栈房间的东西复制到另一个栈房间,且这两个原始变量互不影响。
前端很多时候还是需要保存一些数据的,这里的保存指的是长久的保存。以前的思想是把数据保存在cookie中,或者将key保存在cookie中,将其他数据保存在服务器上。想要一种能够长久的保存在本地的数据,类似数据库或者类似web sql。
因为Cookie是存储在客户端,用户可以随意修改。所以存在一定的安全隐患,服务器为每个Cookie项生成签名。如果用户篡改Cookie,则与签名无法对应上。以此,来判断数据是否被篡改。
后台保存用户信息通常使用的session和cookie结合的方法,而在前端的实际情况中,跨域产生的ajax是无法携带cookie信息的,这样导致了session和cookie的用户信息储存模式受到影响,该怎样去解决这样一个问题呢
我们都知道localStorage不主动删除,永远不会销毁,那么如何设置localStorage的过期时间呢?使用场景: 1.利用本地数据,减少网络传输 ,2.弱网络环境下,高延迟,低带宽,尽量把数据本地化
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!