vue登录注册实例详解


Posted in Javascript onSeptember 14, 2019

步骤一

1.安装脚手架:npm install vue-cli -g
2.wepack生成html模版:vue init webpack ' 文件名'
3.安装axios、js-cookie、element-ui、stylus等等常用插件

步骤二

1.在main.js中引入router、element-ui等

import Vue from 'vue'
import store from './store' //可以先忽略
import App from './App'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.config.productionTip = false
Vue.use(ElementUI)
/* eslint-disable no-new */
new Vue({
 el: '#app',
 router,
 store,
 render: h => h(App)
})

2.可以写组件了

<template>
 <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm login-container">
 <el-form-item label="账号" prop="name">
  <el-input v-model="ruleForm.name"></el-input>
 </el-form-item>
  <el-form-item label="密码" prop="pass">
  <el-input type="password" v-model="ruleForm.pass" auto-complete="off"></el-input>
 </el-form-item>
 <el-form-item>
  <el-button type="primary" @click="submitForm">提交</el-button>
 </el-form-item>
 </el-form>
</template>

<script>
export default {
 data() {
  return {
   ruleForm: {
    name: '',
    pass: ''
   },
   rules: {
    name: [
     { required: true, message: '请输入登录账号', trigger: 'blur' }
    ],
    pass: [
     { required: true, message: '请输入登录密码', trigger: 'blur' }
    ]
   }
  }
 },
}

步骤三

走到这一步就很懵逼了吧,,, 我也是,所以还是先看到效果先吧

1.注册组件,在router文件这里

import Vue from 'vue'
import Router from 'vue-router'
import Login from 'components/login/index'
const _import = require('./_import_' + process.env.NODE_ENV)//没用上当没看见吧,我就是要写这
Vue.use(Router)
export const constantRouterMap = [
 {
  path: '/',
   component:Login,
   name:'登录'
  },
]
export default new Router({
 routes: constantRouterMap
})

emmmm....我猜组件应该渲染出来了,很好!next

步骤四

关键性的步骤到了,看起来很难的vuex

1.第一步,先写好接口方便调用,放在api文件夹里的login.js

import axios from 'axios'
import { server } from './config'

// 登陆
export const requestLogin = params => {
 return axios.post(server + '/jade/user/loginManage.action', params, {
  withCredentials: true, // 跨域凭证
  transformRequest: [function(data) {
   let ret = ''
   for (const it in data) {
    ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
   } // axios官方文档关于怎么用每个参数是什么说的特别特别清楚,我百度过的
   return ret
  }],
  headers: {
   'Content-Type': 'application/x-www-form-urlencoded'
  }
 }).then(res => {
  return Promise.resolve(res.data)
 }, err => {
  console.log(err)
 })
}

2.利用js-cookie插件来存储用户信息

import Cookie from 'js-cookie'

export function getToken() {
 return Cookie.get(TokenKey)
}

export function setToken(token) {
 return Cookie.set(TokenKey, token)
}

export function removeToken() {
 return Cookie.remove(TokenKey)
}

export function getRole() {
 return sessionStorage.getItem('rules')
}

3.好了可以写actions了

import { requestLogin } from 'api/login'
import { getToken,setToken,removeToken } from '../../utils/auth'

const user = {
 state: {
  token: getToken(),
  name: '',
  avatar: ''
 },

 mutations: {
  SET_TOKEN: (state, token) => {
   state.token = token
  }
 },

 actions: {
  // 登录
  Login ({commit}, userInfo) {
   const account = userInfo.account
   const password = userInfo.checkPass
   return new Promise((resolve, reject) => {
    console.log(resolve)
    console.log(reject)
    let params = {
     account: account,
     password: password
    }
    requestLogin(params).then(response => {
     const data = response.result
     setToken(data.sid)
     sessionStorage.setItem('accountType', data.accountType)
     commit('SET_TOKEN', data.sid)
     resolve(response)
    }).catch(error => {
     reject(error)
    })
   })
  }
 }
}

export default user

3.别忘了要注册store

import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'

Vue.use(Vuex)

const store = new Vuex.Store({
  modules: {
    user,
  }
})

export default store

最后一步使用,回到组件

methods: {
  submitForm() {
   this.$refs.ruleForm.validate((valid)=>{
    if(valid) {
     console.log(this.$store)
     this.$store.dispatch('Login',this.ruleForm).then((res)=>{
      console.log(res)
      if(res.success) {
       this.$router.push({path:'/'})
      }else{
       this.$message.error(res.result.error)
      }
     })
    }
   })
  }
 }

以上就是本次介绍的全部知识点,感谢大家对三水点靠木的支持。

Javascript 相关文章推荐
Javascript isArray 数组类型检测函数
Oct 08 Javascript
Knockoutjs的环境搭建教程
Nov 26 Javascript
javascript 获取浏览器版本
Jan 21 Javascript
AngularJS指令详解及示例代码
Aug 16 Javascript
JSON对象 详解及实例代码
Oct 18 Javascript
JS实现双击内容变为可编辑状态
Mar 03 Javascript
基于javaScript的this指向总结
Jul 22 Javascript
vue系列之requireJs中引入vue-router的方法
Jul 18 Javascript
Node.js如何对SQLite的async/await封装详解
Feb 14 Javascript
七行JSON代码把你的网站变成移动应用过程详解
Jul 09 Javascript
JS用最简单的方法实现四舍五入
Aug 27 Javascript
Nuxt的路由动画效果案例
Nov 06 Javascript
javascript合并两个数组最简单的实现方法
Sep 14 #Javascript
VUE项目中加载已保存的笔记实例方法
Sep 14 #Javascript
Layui表格行工具事件与数据回填方法
Sep 13 #Javascript
layui使用表格渲染获取行数据的例子
Sep 13 #Javascript
layui-table表复选框勾选的所有行数据获取的例子
Sep 13 #Javascript
layui表格数据复选框回显设置方法
Sep 13 #Javascript
对layui初始化列表的CheckBox属性详解
Sep 13 #Javascript
You might like
php生成QRcode实例
2014/09/22 PHP
JS 控制CSS样式表
2009/08/20 Javascript
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
AngularJS ui-router刷新子页面路由的方法
2018/07/23 Javascript
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
2020/05/14 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
python写日志文件操作类与应用示例
2019/07/01 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
python实现视频读取和转化图片
2019/12/10 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
幼儿园长自我鉴定
2013/10/17 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
财务简历的自我评价
2014/03/05 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL