一看就会的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入门基础之私有变量
Feb 23 Javascript
将json当数据库一样操作的javascript lib
Oct 28 Javascript
详解JavaScript语法对{}处理的坑爹之处
Jun 05 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
jQuery中after()方法用法实例
Dec 25 Javascript
JavaScript原生对象之Date对象的属性和方法详解
Mar 13 Javascript
web 屏蔽BackSpace键实例代码
Dec 24 Javascript
jquery横向纵向鼠标滚轮全屏切换
Feb 27 Javascript
兼容浏览器的js事件绑定函数(详解)
May 09 Javascript
浅谈Angular路由复用策略
Oct 04 Javascript
详解React 元素渲染
Jul 07 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 jQuery
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
example2.php
2006/10/09 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
php中使用websocket详解
2016/09/23 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
Smarty模板语法详解
2019/07/20 PHP
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
JS实现分页导航效果
2020/02/19 Javascript
Python群发邮件实例代码
2014/01/03 Python
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
Python简易版图书管理系统
2019/08/12 Python
极简鞋类,赤脚的感觉:Lems Shoes
2019/08/06 全球购物
初中学校对照检查材料
2014/08/19 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
2014年客户经理工作总结
2014/11/20 职场文书
2014年文秘工作总结
2014/11/25 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
利用Pycharm连接服务器的全过程记录
2021/07/01 Python
一篇文章弄懂Python中的内建函数
2021/08/07 Python
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python
SQL基础的查询语句
2021/11/11 MySQL
python 管理系统实现mysql交互的示例代码
2021/12/06 Python
java executor包参数处理功能 
2022/02/15 Java/Android