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设计模式之观察者模式的多个实现版本实例
Mar 03 Javascript
javascript实现在线客服效果
Jul 15 Javascript
在JavaScript中对HTML进行反转义详解
May 18 Javascript
js获取所有checkbox的值的简单实例
May 30 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
Nov 17 Javascript
纯JS实现表单验证实例
Dec 24 Javascript
Vue.2.0.5过渡效果使用技巧
Mar 16 Javascript
详解webpack打包vue时提取css
May 26 Javascript
Angular中的$watch方法详解
Sep 18 Javascript
微信小程序实现左滑修改、删除功能
Oct 19 Javascript
详解微信小程序文件下载--视频和图片
Apr 24 Javascript
node.js中 redis 的安装和基本操作示例
Feb 10 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学习笔记之面向对象编程
2012/12/29 PHP
php实现微信公众号无限群发
2015/10/11 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
python交易记录链的实现过程详解
2019/07/03 Python
python3 xpath和requests应用详解
2020/03/06 Python
python 解决函数返回return的问题
2020/12/05 Python
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
.NET程序员的数据库面试题
2012/10/10 面试题
木马的传播途径主要有哪些
2016/04/08 面试题
2013年学期结束动员演讲稿
2014/01/07 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
2015年三万活动总结
2015/03/25 职场文书
银行催款通知书
2015/04/17 职场文书
安全学习心得体会范文
2016/01/18 职场文书