Vue中使用LocalStorage和SessionStorage
LocalStorage和SessionStorage
在使用之前,我们先废话的了解一下LocalStorage和SessionStorage
1.sessionStorage(临时存储):为没一个数据维持一个存储区域,浏览器打开会创建,关闭浏览器就会消失。
2.localStorage(长期存储):和前者一样,区别在于浏览器关闭后数据依然存在。
因为两者差不多,所以我已localStorage为例
localStorage使用方法
保存
保存到localStorage,如果保存的是个对象,那么需要把数据转换为JSON格式,字符则不需要
1 2 3 4 5 6 7 8 9 10 11 12
|
var user = { name : 'admin', password: 'password' }
var str = 'hello';
localStorage.setItem("user",JSON.stringify(user));
localStorage.setItem("hello",JSON.stringify(str));
|
获取
1 2 3 4 5
| var user = localStorage.getItem("user");
user = JSON.parse(user); name = user.name
|
删除
1 2 3 4
| localStorage.remove("user");
localStorage.clear();
|
浏览器查看
Vue中实现用例
本例中以登录为例,使用了Element-UI。
首先创建一个登录页面:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| <template> <div class="hello"> <el-form ref="form" :model="form" label-width="80px"> <el-form-item label="姓名:"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="密码:"> <el-input v-model="form.pwd"></el-input> </el-form-item> <el-form-item> <el-button @click="login()">登录</el-button> </el-form-item> </el-form> </div> </template>
<script> export default { name: 'HelloWorld', data() { return { form: { name: "", pwd: "" } } }, methods: { login() { if ((this.form.name == "admin") && (this.form.pwd == "123")) { var user = JSON.stringify(this.form); this.$message({ message: '恭喜你,登录成功!', type: 'success' }); localStorage.setItem("user", user); this.$router.push({ path: '/index' }) } else { this.$message("用户名或密码错误!"); } } } } </script>
<style scoped> .hello { width: 50%; margin: 0 auto; } </style>
|
然后是登录成功之后的页面:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| <template> <div> <el-row v-if="name!=''"> <el-col :span="3">欢迎您:</el-col> <el-col :span="4">{{name}}!</el-col> <a @click="loginout()">注销</a> </el-row> <el-row v-else> <el-col :span="3">您还未登录!</el-col> </el-row>
</div> </template>
<script> export default { name: 'HelloWorld', data() { return { msg: "", name: "" } }, created() { this.checkLogin() }, methods: { checkLogin() { var user = JSON.parse(localStorage.getItem("user")); if (user) { this.name = user.name } }, loginout() { localStorage.removeItem("user") this.$message({ message: '注销成功!', type: 'success' }); this.$router.push({ path: "/" }) } } } </script>
<style> .el-col { font-size: 20px; } </style>
|
配置路由:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import Vue from 'vue' import Router from 'vue-router' import HelloWorld from '@/components/HelloWorld' import index from '@/components/index'
Vue.use(Router)
export default new Router({ mode: "history", routes: [{ path: "/index", name: "index", component: index }, { path: '/', name: 'HelloWorld', component: HelloWorld,
} ] })
|
展示
登录页面
登录成功后