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 相关文章推荐
js 禁止选择功能实现代码(兼容IE/Firefox)
Apr 23 Javascript
JavaScript 变量作用域分析
Jul 04 Javascript
JavaScript中instanceof运算符的用法总结
Nov 19 Javascript
为什么JS中eval处理JSON数据要加括号
Apr 13 Javascript
JS数组合并push与concat区别分析
Dec 17 Javascript
基于twbsPagination.js分页插件使用心得(分享)
Oct 21 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
浅谈Angular 中何时取消订阅
Nov 22 Javascript
babel之配置文件.babelrc入门详解
Feb 22 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
Oct 25 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
Jun 17 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
Nov 07 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版)
2006/10/09 PHP
一步一步学习PHP(6) 面向对象
2010/02/16 PHP
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
javaScript中push函数用法实例分析
2015/06/08 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
js数组去重的方法总结
2019/01/18 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python、Javascript中的闭包比较
2015/02/04 Python
python如何查看系统网络流量的信息
2016/09/12 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
JAVA高级程序员面试题
2013/09/06 面试题
广告学专业自荐信范文
2014/02/24 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
上海世博会口号
2014/06/19 职场文书
党员自我剖析材料
2014/08/31 职场文书
不同意离婚答辩状
2015/05/22 职场文书
横空出世观后感
2015/06/09 职场文书