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 文章截取部分无损html显示实现代码
May 04 Javascript
dreamweaver 安装Jquery智能提示
Apr 02 Javascript
js调用图片隐藏&amp;显示实现代码
Sep 13 Javascript
JS实现一键回顶功能示例代码
Oct 28 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
Jan 13 Javascript
js+css实现文字散开重组动画特效代码分享
Aug 21 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
Jun 29 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
Aug 04 Javascript
jQuery事件详解
Feb 23 Javascript
JS大坑之19位数的Number型精度丢失问题详解
Apr 22 Javascript
JS原型与继承操作示例
May 09 Javascript
vue 实现基础组件的自动化全局注册
Dec 25 Vue.js
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
Snoopy类使用小例子
2008/04/15 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
围观tangram js库
2010/12/28 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
python学习笔记:字典的使用示例详解
2014/06/13 Python
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
办公室打字员岗位职责
2014/04/16 职场文书
产品生产计划书
2014/05/07 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
卖房授权委托书样本
2014/10/05 职场文书
网聊搭讪开场白
2015/05/28 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫