Vue实战记录之登陆页面的实现

1 前期准备

1.1 安装Node.js

官网下载地址:https://nodejs.org/zh-cn/

Vue实战记录之登陆页面的实现_第1张图片

安装完成后,在终端输入node -v来查询版本号

Vue实战记录之登陆页面的实现_第2张图片

查看npm版本,npm -v

1.2 安装webpack

终端输入

npm install --save-dev webpack

查看版本webpack -v

1.3 安装vue-cli

因为创建vue项目使用vue-cli3以上才有的可视化工具来创建,所以这里的版本选择的是3以上的版本

npm install -g @vue/cli

升级vue-cli

npm update -g @vue/cli

卸载vue-cli

npm uninstall vue-cli -g

2 搭建Vue项目

安装好vue-cli后,使用vue提供的可视化工具来创建一个vue项目

2.1 创建项目

 在终端输入vue ui,则会进入可视化工具

Vue实战记录之登陆页面的实现_第3张图片

选择创建项目的路径

Vue实战记录之登陆页面的实现_第4张图片

创建项目文件夹

Vue实战记录之登陆页面的实现_第5张图片

预设选择手动,我们手动添加项目的配置

Vue实战记录之登陆页面的实现_第6张图片

选择好功能配置后,直接下一步,直接创建项目

Vue实战记录之登陆页面的实现_第7张图片

等待项目创建好以后,在WebStore打开项目

2.2 项目目录

Vue实战记录之登陆页面的实现_第8张图片

2.3 导入Element UI

直接在ElementUI官网就可以看到导入方式,这里选择全部模块的导入

在控制台输入

 npm install element-ui --save

在main.js引用

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

Vue.config.productionTip = false

/*导入ElementUI*/
import elementUI from 'element-ui';
/*导入ElementUI的CSS样式*/
import 'element-ui/lib/theme-chalk/index.css';
/*Vue使用ElementUI*/
Vue.use(elementUI);

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

3 实现登陆页面

3.1 修改App.vue

这里把全局的设置先进行一个设置,把之前的模版的东西删掉




修改全局样式




3.2 创建Login.vue

在views目录下右键创建一个vue文件,命名为Login

在ElementUI官网查询布局组件,选择自己的布局,复制到vue文件中






复制表单,这里复制的是带验证的表单,复制完以后对表单进行修改






3.3 配置路由

在router下的index.js中进行配置

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import Login from '../views/Login.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  // 配置登陆页面的路由
  {
    path: '/login',
    name: 'login',
    component: Login
  }
]

const router = new VueRouter({
  routes
})

export default router

效果图:

Vue实战记录之登陆页面的实现_第9张图片

4 实现登陆功能

4.1 导入axios

在vue里面,是只负责页面,也就是view,但是我们登陆的话肯定是需要在后台进行验证的,那么vue里面,通讯是交给了axios来处理的

在控制台终端输入

npm install axios --save

回车,则会自动导入模块

在main.js中进行注册

/*导入axios*/
import axios from "axios";
/*全局绑定axios*/
Vue.prototype.$axios = axios;

4.2 导入qs和Mock

qs是在vue中提供的一个插件,可以帮助我们把字符串进行解析,也可以帮助我们把参数序列化

在控制台终端输入

 npm install qs --save

回车,则会自动导入模块

在main.js中进行注册

/*导入qs*/
import qs from 'qs';
/*全局绑定*/
Vue.prototype.$qs = qs;

因为现在没有后台的设计,我们拿不到数据库的数据,所以使用Mock来模拟后端的数据

在控制台终端输入

 npm install mockjs --save-dev

回车,则会自动导入模块

创建一个mock的js文件,创建一个空白的js文件,命名随意

在main.js中进行导入mock

/*引入mock数据*/
require('./mock/LoginService.js')

4.3 编写提交js

获取验证码:

// 获取验证码方法
getVerifyCodeImg() {
  /*获取验证码*/
  this.$axios.get('/getVerifyCode').then(res => {
    // 获取验证码key
    this.loginForm.codeToken = res.data.data.codeToken;
    // 获取验证码图片
    this.codeImg = res.data.data.codeImg;
  })
}
// 因为在页面渲染好以后我们就需要去获取验证码,所以绑定在created下
created() {
  // 页面渲染完成后执行获取验证码方法
  this.getVerifyCodeImg();
}

表单提交:

submitForm(formName) {
  this.$refs[formName].validate((valid) => {
    if (valid) {
      // 表单验证成功
      this.$axios.post('/login', this.loginForm).then(res => {
        // 拿到结果
        let result = JSON.parse(res.data.data);
        let message = res.data.msg;
        // 判断结果
        if (result) {
          /*登陆成功*/
          Element.Message.success(message);
          /*跳转页面*/
          router.push('/')
        } else {
          /*打印错误信息*/
          Element.Message.error(message);
        }
      })
    } else {
      console.log('error submit!!');
      return false;
    }
  });
}

完整的js


4.4 编写Mock测试数据

在之前新建的LoginService.js下写入mock数据

/*绑定Mock*/
const Mock = require('mockjs');
const Random = Mock.Random;

/*设置一个返回数据的通用结果*/
let result = {
  msg: '',
  data: ''
}

/*模拟数据库信息*/
let username = 'xiaolong';
let password = '123456';
let verityCode = 'abcde';

/**
 * 模拟验证码
 */
Mock.mock('/getVerifyCode', 'get', () => {
  result.data = {
    codeToken: Random.string(32),
    codeImg: Random.dataImage('75x40', verityCode)
  }
  return result;
})

/**
 * 拦截登陆请求
 */
Mock.mock('/login', 'post', (req) => {
  // 获取请求数据
  let from = JSON.parse(req.body);
  //判断验证码
  if (verityCode === from.code) {
    // 验证账户
    if (username === from.username) {
      // 验证密码
      if (password === from.password) {
        result.msg = '登陆成功'
        result.data = 'true'
      } else {
        result.msg = '密码错误'
        result.data = 'false'
      }
    } else {
      result.msg = '用户不存在'
      result.data = 'false'
    }
  } else {
    result.msg = '验证码错误'
    result.data = 'false'
  }
  return result;
})

总结

到此这篇关于Vue实战记录之登陆页面实现的文章就介绍到这了,更多相关Vue登陆页面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(Vue实战记录之登陆页面的实现)