这是我参与更文挑战的第8天,活动详情查看:更文挑战
localStorage特点:
1、localStorage拓展了cookie的4K限制;
2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的;
3、浏览器的大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性;
4、目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换;
5、localStorage在浏览器的隐私模式下面是不可读取的;
6、localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡;
7、localStorage不能被爬虫抓取到;localStorage与sessionStorage的唯一一点区别就是localStorage属于永久性存储,而sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空;
8、localStorage的使用也是遵循同源策略的,所以不同的网站直接是不能共用相同的localStorage
与sessionStorage的区别:
1、localStorage和sessionStorage的区别; 2、localStorage属于持久化保存(除非你删除,否则一直保存)sessionStorage是临时保存(页面刷新数据就没了); 3、localStorage保存的数据可以跨页面,sessionStorage不可以;
localStorage使用注意事项:
1、localStorage在保存数据的时候,同一个键只能保存一条数据
2、如果想要将多个数据保存到同一个键,可以将多条数据保存到数组,再保存到本地
3、如果将多个数据保存到数组中,获取的结果是字符串
4、以后遇到本地存储最终的完美解决方案:
保存数据的时候先将数据转化为字符串:JSON.stringify(值) 获取通过JSON.parse()将获取的结果转化为对应的数组
结果:就是将数据从字符串转成数组,这样拿到的数据方便后续操作
Cookie特点:
大小:4k左右;临时保存:关闭浏览器就会消失;保存的数据可以跨页面;Cookie可以使用 document.cookie 属性来创建 、读取、及删除 cookie 还可以为 cookie 添加一个过期时间(以 UTC 或 GMT 时间)
document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT";
Cookie使用方法: 设置值:document.cookie="username=John Doe"; 取值:var x = document.cookie; 删除值:非常简单,只需要设置 expires 参数为以前的时间即可, 示例:document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
在main.js引入vuex:
import Vuex from 'vuex';
Vue.use(Vuex);
new Vue({
el: '#app',
router,
store, //将store注入根节点
components: {App},
template: '<App/>'
});
在src/目录下新建store文件夹 新建四个js文件,如下图:
编写index.js
import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import getters from './getters'
import mutations from './mutations'
Vue.use(Vuex)
export default new Vuex.Store({
state,
mutations,
getters
})
编写state.js
// 如果本地缓存里有token,就将token赋值
let defaultToken = ''
try {
if (localStorage.token) {
defaultToken = localStorage.token
}
} catch (e) {}
export default {
token: defaultToken
}
编写mutation.js
export default {
changeToken (state, token) {
//登录或者注册时,存储token的方法
state.token = token
try {
localStorage.token = token
} catch (e) {}
},
clearToken (state) {
//退出登录时清除token的方法
localStorage.token = ''
state.token = ''
}
}
编写getters.js
export default {
login: state => {
// 计算登录状态,返回一个boolean值
return state.token !== ''
}
}
调用方法:
使用vuex对应的三个辅助函数mapState mapMutations mapGetters
// 在组件内引入
import { mapState,mapMutations,mapGetters } from 'vuex'
computed: {
...mapState(['token']), // 可以直接使用this.token访问
...mapGetters(['login']) //同上
}
methods: {
...mapMutations(['clearToken']) // 使用this.clearToken调用
}