一看就会的vuex实现登录验证(附案例)


Posted in Javascript onJanuary 09, 2020

一、vuex是啥?

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

简单来说,Vuex 类似 Redux 的状态管理器,用来管理Vue的所有组件状态。

当你打算开发大型单页应用(SPA),会出现多个视图组件依赖同一个状态,来自不同视图的行为需要变更同一个状态。

遇到以上情况时候,你就应该考虑使用Vuex了,它能把组件的共享状态抽取出来,当做一个全局单例模式进行管理。这样不管你在何处改变状态,都会通知使用该状态的组件做出相应修改。

vuex大体分为如下几部分:

  • state 用来数据共享数据存储
  • mutation 用来注册改变数据状态
  • getters 用来对共享数据进行过滤操作
  • action 解决异步改变共享数据
  • modules:store的子模块,为了开发大型项目,方便状态管理而使用的

二、vuex使用

1.首先创建一个vue-cli项目,这里不详述。

vue init webpack mylogin

2.安装vuex:

npm install vuex --save

3.在src目录下新建文件夹store,用来存放vuex内容

目录结构如下:

一看就会的vuex实现登录验证(附案例)

4.在main.js中引入vuex

import Vuex from 'vuex'
import store from './store'
Vue.use(Vuex)

一看就会的vuex实现登录验证(附案例)

5.在store文件夹下新建state.js,vuex用来存储数据
内容如下:

const state={
 userInfo:''
}
export default state;

userInfo用来保存用户信息,根据是否有值来判断跳转页面。

6.在store文件夹下新建multation.js,用来修改vuex中存储的数据
内容如下:

const mutations={
 login(state,v){
  state.userInfo=v;
 }
}
export default mutations;

7.在store文件夹下新建index.js,用来初始化vuex
内容如下:

import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import mutations from './multation'

Vue.use(Vuex);
const store =new Vuex.Store({
 state,
 mutations
})
export default store;

此时在浏览器中就可以看到如下(浏览器需增加插件vue devTools):

一看就会的vuex实现登录验证(附案例)

8.本项目界面如下

主页面和登陆页面

一看就会的vuex实现登录验证(附案例)

9.login.vue提交方法如下:

submitBtn(){
 let me=this;
 if(!me.user.username||!me.user.pwd){
  alert("用户名或密码不能为空");
 }
 else {
  this.$store.commit('login',this.user);
  this.$router.push('./');
 }
}

通过commit实现执行multations里刚才定义的login方法。即当点击登陆时state中的userInfo已经被赋值。接下来通过判断此字段是否有值来进行页面跳转。

10.在main.js用router.beforeEach方法对vuex中的userInfo进行判断

router.beforeEach(function(to,from,next){
 if(store.state.userInfo||to.path==='/login'){
  next();
 }
 else {
  next({path:'/login'})
 }
})

效果图:

一看就会的vuex实现登录验证(附案例)

登陆后:

一看就会的vuex实现登录验证(附案例)

案例地址:https://github.com/myweiwei/vuex-login

将不断更新完善,期待您的批评指正!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS在IE和FF下attachEvent,addEventListener学习笔记
Nov 26 Javascript
JQuery的Alert消息框插件使用介绍
Oct 09 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
Mar 14 Javascript
js变量、作用域及内存详解
Sep 23 Javascript
jQuery判断多个input file 都不能为空的例子
Jun 23 Javascript
举例讲解如何判断JavaScript中对象的类型
Apr 22 Javascript
利用Javascript实现简单的转盘抽奖
Feb 13 Javascript
利用Angular7开发一个Radio组件的全过程
Jul 11 Javascript
Node对CommonJS的模块规范
Nov 06 Javascript
详解node和ES6的模块导出与导入
Feb 19 Javascript
JavaScript 空间坐标的使用
Aug 19 Javascript
详解前端任务构建利器Gulp.js使用指南
Apr 30 Javascript
Websocket 向指定用户发消息的方法
Jan 09 #Javascript
Vue快速实现通用表单验证的示例代码
Jan 09 #Javascript
JS实现商品橱窗特效
Jan 09 #Javascript
微信小程序实现页面浮动导航
Jan 08 #Javascript
微信小程序基于movable-view实现滑动删除效果
Jan 08 #Javascript
小程序自定义模板实现吸顶功能
Jan 08 #Javascript
微信小程序静默登录的实现代码
Jan 08 #Javascript
You might like
PHP获取数组中某元素的位置及array_keys函数应用
2013/01/29 PHP
thinkphp 多表 事务详解
2013/06/17 PHP
分享一段php获取linux服务器状态的代码
2014/05/27 PHP
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
EsLint入门学习教程
2017/02/17 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
Python高效编程技巧
2013/01/07 Python
使用python 获取进程pid号的方法
2014/03/10 Python
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
详解Python中where()函数的用法
2018/03/27 Python
Python中作用域的深入讲解
2018/12/10 Python
python检测服务器端口代码实例
2019/08/31 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
2020/04/20 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
招聘与培训专员岗位职责
2014/01/30 职场文书
党员个人公开承诺书
2014/08/29 职场文书
2014年网管工作总结
2014/12/11 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
JavaScript实现简单计时器
2021/06/22 Javascript