一看就会的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 相关文章推荐
JavaScript 程序编码规范
Nov 23 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
Jan 31 Javascript
javascript实现页面内关键词高亮显示代码
Apr 03 Javascript
深入浅析JavaScript中数据共享和数据传递
Apr 25 Javascript
AngularJS动态绑定HTML的方法分析
Nov 07 Javascript
Vue概念及常见命令介绍(1)
Dec 08 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
Oct 20 Javascript
AngularJS基于MVC的复杂操作实例讲解
Dec 31 Javascript
vue实现百度搜索功能
Dec 28 Javascript
基于Electron实现桌面应用开发代码实例
Jul 07 Javascript
Vue this.$router.push(参数)实现页面跳转操作
Sep 09 Javascript
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
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的curl实现get和post的代码
2008/08/23 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
JavaScript中的私有成员
2006/09/18 Javascript
js left,right,mid函数
2008/06/10 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
Vue.extend构造器的详解
2017/07/17 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
基于vue实现分页效果
2017/11/06 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
python计算一个序列的平均值的方法
2015/07/11 Python
Python实现简单字典树的方法
2016/04/29 Python
python使用epoll实现服务端的方法
2018/10/16 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
Django rstful登陆认证并检查session是否过期代码实例
2019/08/13 Python
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
师范生自我鉴定
2014/03/20 职场文书
经理秘书求职自荐信范文
2014/03/23 职场文书
法律顾问服务方案
2014/05/15 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
贷款委托书怎么写
2014/08/02 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
门店店长岗位职责
2015/04/14 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL