一看就会的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静态的url如何传递
May 03 Javascript
异步动态加载js与css文件的js代码
Sep 15 Javascript
JS获取几种URL地址的方法小结
Feb 26 Javascript
jquery实现textarea输入框限制字数的方法
Jan 15 Javascript
关于js里的this关键字的理解
Aug 17 Javascript
jQuery与Ajax以及序列化
Feb 01 Javascript
简单实现js选项卡切换效果
Feb 03 Javascript
js图片切换具体实现代码
Oct 13 Javascript
AngularJS 应用模块化的使用
Apr 04 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
Jan 18 Javascript
实现elementUI表单的全局验证的方法步骤
Apr 29 Javascript
深入了解query和params的使用区别
Jun 24 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
如何做到多笔资料的同步
2006/10/09 PHP
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
初识javascript 文档碎片
2010/07/13 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
Vue header组件开发详解
2018/01/26 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
vue.js实现回到顶部动画效果
2019/07/31 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
javascript实现留言板功能
2020/02/08 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
初中生学习生活的自我评价
2013/11/20 职场文书
毕业生自荐信
2013/12/14 职场文书
自立自强的名人事例
2014/02/10 职场文书
怎么写自荐书范文
2014/02/12 职场文书
求职简历自我评价2015
2015/03/10 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python