广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue实战记录之登陆页面的实现
  • 146
分享到

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

2024-04-02 19:04:59 146人浏览 独家记忆
摘要

目录1 前期准备1.1 安装node.js1.2 安装webpack1.3 安装Vue-cli2 搭建Vue项目2.1 创建项目2.2 项目目录2.3 导入Element UI3 实

1 前期准备

1.1 安装node.js

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

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

查看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,则会进入可视化工具

选择创建项目的路径

创建项目文件夹

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

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

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

2.2 项目目录

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


import elementUI from 'element-ui';

import 'element-ui/lib/theme-chalk/index.CSS';

Vue.use(elementUI);

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

3 实现登陆页面

3.1 修改App.vue

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


<template>
  <div id="app">
    <router-view/>
  </div>
</template>

<style>
</style>

修改全局样式


<template>
  <div id="app">
    <!--路由页面-->
    <router-view/>
  </div>
</template>

<style>

html {
  height: 100%;
}


body {
  padding: 0;
  margin: 0;
  
  height: 100%;
}


#app {
  height: 100%;
}


a {
  text-decoration: none;
}
</style>

3.2 创建Login.vue

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

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


<template>
  <!-- 一行的元素 -->
  <el-row type="flex" class="row-bg" justify="center">
    <!--第一列-->
    <el-col :span="6">
      <div class="grid-content bg-purple"></div>
    </el-col>
    <!--第二列-->
    <el-col :span="6">
      <div class="grid-content bg-purple-light"></div>
    </el-col>
    <!--第三列-->
    <el-col :span="6">
      <div class="grid-content bg-purple"></div>
    </el-col>
  </el-row>
</template>

<script>
export default {
  name: "Login"
}
</script>

<style scoped>

</style>

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


<template>
  <div :xl="6" :lg="7" class="bg-login">
    <!--loGo-->
    <el-image :src="require('@/assets/logo.png')" class="logo"/>
    <!--标题-->
    <el-row type="flex" class="row-bg row-two" justify="center" align="middle">
      <el-col :span="6"></el-col>
      <el-col :span="6">
        <!--标题-->
        <h1 class="title">xAdmin管理系统</h1>
      </el-col>
      <el-col :span="6"></el-col>
    </el-row>
    <!--fORM表单-->
    <el-row type="flex" class="row-bg card" justify="center" align="bottom">
      <el-col :span="7" class="login-card">
        <!--loginForm-->
        <el-form :model="loginForm" :rules="rules" ref="loginForm" label-width="21%" class="loginForm">
          <el-form-item label="账户" prop="username" style="width: 380px">
            <el-input v-model="loginForm.username"></el-input>
          </el-form-item>
          <el-form-item label="密码" prop="passWord" style="width: 380px">
            <el-input type="password" v-model="loginForm.password"></el-input>
          </el-form-item>
          <el-form-item label="验证码" prop="code" style="width: 380px">
            <el-input v-model="loginForm.code" class="code-input" style="width: 70%;float: left"></el-input>
            <!--验证码图片-->
            <el-image :src="codeImg" class="codeImg"></el-image>
          </el-form-item>
          <el-form-item label="记住密码" prop="remember">
            <el-switch v-model="loginForm.remember"></el-switch>
          </el-form-item>
          <el-form-item class="btn-ground">
            <el-button type="primary" @click="submitForm('loginForm')">立即登陆</el-button>
            <el-button @click="resetForm('loginForm')">重置</el-button>
          </el-form-item>
        </el-form>
      </el-col>
    </el-row>
  </div>
</template>

<script>
export default {
  name: "Login",
  data() {
    return {
      // 表单信息
      loginForm: {
        // 账户数据
        username: '',
        // 密码数据
        password: '',
        // 验证码数据
        code: '',
        // 记住密码
        remember: false,
        // 验证码的key,因为前后端分离,这里验证码不能由后台存入session,所以交给vue状态管理
        codeToken: ''
      },
      // 表单验证
      rules: {
        // 设置账户效验规则
        username: [
          {required: true, message: '请输入账户', trigger: 'blur'},
          {min: 3, max: 10, message: '长度在 3 到 10 个字符的账户', trigger: 'blur'}
        ],
        // 设置密码效验规则
        password: [
          {required: true, message: '请输入密码', trigger: 'blur'},
          {min: 6, max: 15, message: '长度在 6 到 15 个字符的密码', trigger: 'blur'}
        ],
        // 设置验证码效验规则
        code: [
          {required: true, message: '请输入验证码', trigger: 'blur'},
          {min: 5, max: 5, message: '长度为 5 个字符', trigger: 'blur'}
        ]
      },
      // 绑定验证码图片
      codeImg: null
    };
  },
  methods: {
    // 提交表单
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          // 表单验证成功
          alert('submit')
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
    // 重置表单
    resetForm(formName) {
      this.$refs[formName].resetFields();
    }
  },
}
</script>

<style scoped>
.codeImg {
  
  float: right;
  
  border-radius: 3px;
  
  width: 26%;
}

.bg-login {
  height: 100%;
  background-image: url("../assets/backgroud.jpg");
  background-size: 200%;

}

.btn-ground {
  text-align: center;
}

.logo {
  margin: 30px;
  height: 70px;
  width: 70px;
  position: fixed;
}

.title {
  text-shadow: -3px 3px 1px #5f565e;
  text-align: center;
  margin-top: 60%;
  color: #41b9a6;
  font-size: 40px;
}

.login-card {
  background-color: #ffffff;
  opacity: 0.9;
  box-shadow: 0 0 20px #ffffff;
  border-radius: 10px;
  padding: 40px 40px 30px 15px;
  width: auto;
}
</style>

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

效果图:

4 实现登陆功能

4.1 导入axios

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

在控制台终端输入


npm install axios --save

回车,则会自动导入模块

在main.js中进行注册



import axios from "axios";

Vue.prototype.$axios = axios;

4.2 导入qs和Mock

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

在控制台终端输入


 npm install qs --save

回车,则会自动导入模块

在main.js中进行注册



import qs from 'qs';

Vue.prototype.$qs = qs;

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

在控制台终端输入


 npm install mockjs --save-dev

回车,则会自动导入模块

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

在main.js中进行导入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


<script>
import Element from 'element-ui';
import router from "@/router";

export default {
  name: "Login",
  data() {
    return {
      // 表单信息
      loginForm: {
        // 账户数据
        username: '',
        // 密码数据
        password: '',
        // 验证码数据
        code: '',
        // 记住密码
        remember: false,
        // 验证码的key,因为前后端分离,这里验证码不能由后台存入session,所以交给vue状态管理
        codeToken: ''
      },
      // 表单验证
      rules: {
        // 设置账户效验规则
        username: [
          {required: true, message: '请输入账户', trigger: 'blur'},
          {min: 3, max: 10, message: '长度在 3 到 10 个字符的账户', trigger: 'blur'}
        ],
        // 设置密码效验规则
        password: [
          {required: true, message: '请输入密码', trigger: 'blur'},
          {min: 6, max: 15, message: '长度在 6 到 15 个字符的密码', trigger: 'blur'}
        ],
        // 设置验证码效验规则
        code: [
          {required: true, message: '请输入验证码', trigger: 'blur'},
          {min: 5, max: 5, message: '长度为 5 个字符', trigger: 'blur'}
        ]
      },
      // 绑定验证码图片
      codeImg: null
    };
  },
  methods: {
    // 提交表单
    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;
        }
      });
    },
    // 重置表单
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
    // 获取验证码方法
    getVerifyCodeImg() {
      
      this.$axios.get('/getVerifyCode').then(res => {
        // 获取验证码key
        this.loginForm.codeToken = res.data.data.codeToken;
        // 获取验证码图片
        this.codeImg = res.data.data.codeImg;
      })
    }
  },
  created() {
    // 页面渲染完成后执行获取验证码方法
    this.getVerifyCodeImg();
  }
}
</script>

4.4 编写Mock测试数据

在之前新建的LoginService.js下写入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登陆页面内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue实战记录之登陆页面的实现

本文链接: https://www.lsjlt.com/news/128046.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue实战记录之登陆页面的实现
    目录1 前期准备1.1 安装Node.js1.2 安装webpack1.3 安装vue-cli2 搭建Vue项目2.1 创建项目2.2 项目目录2.3 导入Element UI3 实...
    99+
    2022-11-12
  • vue如何实现登陆页面
    这篇文章主要介绍“vue如何实现登陆页面”,在日常操作中,相信很多人在vue如何实现登陆页面问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue如何实现登陆页面”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-30
  • vue实现登陆页面开发实践
    目录一、input的校验没有可说的,记住俩点,一个控制输入长度,一个控制格式。二、验证码逻辑:组件使用的是vant ui,具体用法可去官网看。 分几个部分考虑, 一、输入框input...
    99+
    2022-11-13
  • amazeui页面分析之怎么实现登录页面
    小编给大家分享一下amazeui页面分析之怎么实现登录页面,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、总结tpl命名空间:tpl命名空间的样式都是从app....
    99+
    2023-06-09
  • Java实战之实现用户登录
    目录一、前言二、案例需求三、开始第一步四、第二步五、第三步六、第四步七、总结一、前言 二、案例需求 1.编写login.html登录页面,username&passwor...
    99+
    2022-11-12
  • Vue实现用户没有登陆时,访问后自动跳转登录页面的实现思路
    目录设计思路 代码实现设计思路 定义路由的时候配置属性,这里使用needLogin标记访问页面是否需要登录设置路由守卫,每个页面在跳转之前都要经过验证,校验用户信息是否存在...
    99+
    2023-02-23
    Vue自动跳转登录页面 vue 未登录跳转登录页 Vue跳转登录页面
  • vue页面怎么实现单点登录
    在vue页面中实现单点登录的方法有:1.通过Cookie作为凭证媒介实现;2.通过页面重定向方式实现;3.通过JSONP实现;具体方法如下:通过Cookie作为凭证媒介实现单点登录可以在vue中利用cookie作为媒介,用于存放用户凭证,当...
    99+
    2022-10-17
  • 怎么使用vue cli实现项目登陆页面
    这篇文章主要介绍“怎么使用vue cli实现项目登陆页面”,在日常操作中,相信很多人在怎么使用vue cli实现项目登陆页面问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用vue&n...
    99+
    2023-07-04
  • Vue实战之vue登录验证的示例分析
    这篇文章主要为大家展示了“Vue实战之vue登录验证的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue实战之vue登录验证的示例分析”这篇文章吧。使...
    99+
    2022-10-19
  • Vue怎么实现用户访问没有登陆时自动跳转登录页面
    这篇文章主要介绍了Vue怎么实现用户访问没有登陆时自动跳转登录页面的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue怎么实现用户访问没有登陆时自动跳转登录页面文章都会有所收获,下面我们一起来看看吧。设计思路定...
    99+
    2023-07-05
  • vue+three.js实现炫酷的3D登陆页面示例详解
    目录前言:Three.js的基础知识关于场景关于光源关于相机(重要)关于渲染器完善效果创建一个左上角的地球使地球自转创建星星使星星运动创建云以及运动轨迹使云运动完成three.js有...
    99+
    2022-11-13
  • HTML、PHP实战:搭建一个网页登录页面。
    一、实验环境。 MySQL5.7.26 FTP0.9.60 Apache2.4.39 我这里用的是PHPstudy小皮一键搭建的。 数据库  二、登录页面。 登录页面前端代码 文件名:denglu.html '登录界面'用户名:密码: 登...
    99+
    2023-08-31
    php html apache 前端 数据库
  • vue实现登录界面
    使用Vue实现简单的用户登录界面,登录成功以后查询账号用户类型进行相应的页面路由跳转,效果如下图所示: HTML部分: <div class="loginbody"> ...
    99+
    2022-11-13
  • Vue Router 实现登录后跳转到之前想要访问的页面
    目录简介简单示例补充用户退出时的处理进阶简介 该功能主要用于判定用户权限,在用户无权限时重定向至登录页,并在用户完成登录后,再定向至用户之前想要访问的路由;或者用户在任意路由点击登录...
    99+
    2022-12-14
    Vue Router 登录跳转 Vue Router 登录后跳转访问页面
  • jquery实现登陆跳转页面跳转页面跳转
    在Web开发中,很常见的一种需求是用户通过输入账号和密码完成登陆操作后,跳转到不同的页面。这一过程中需要用到Javascript库中非常流行的jQuery来实现。jQuery是一个快速、简洁的JavaScript库,其设计思想是“写更少,做...
    99+
    2023-05-25
  • Laravel怎么实现登陆过期后跳转到登陆页面
    这篇文章主要讲解了“Laravel怎么实现登陆过期后跳转到登陆页面”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel怎么实现登陆过期后跳转到登陆页面”吧!一、应用场景:用户登陆后存...
    99+
    2023-07-04
  • SpringBoot实现网站的登陆注册逻辑记录
    目录技术列表:用户登录逻辑:用户注册逻辑:参考文献:总结该文章主要是为了整理之前学习项目中的知识点,并进行一定程度的理解。 技术列表: SpringBoot MyS...
    99+
    2022-11-12
  • SpringBoot+VUE实现前后端分离的实战记录
    一,前端VUE项目 这里使用VUE UI创建一个VUE项目 命令行输入vue ui进入 手动配置项目 选中这三个 点击下一步->点击创建项目 用IDEA打开刚才创建的项目...
    99+
    2022-11-12
  • java实现简单登录界面的实战过程
    目录一、概要二、分类部分三、代码实现总结一、概要 我们可以用java实现简单的登录界面。 如上效果,直观但也需要一步一步来完成,从界面弹窗的设置,图片的插入,文本框的设置,到登录的...
    99+
    2022-11-13
  • node.js实现登录注册页面
    本文实例为大家分享了node.js登录注册页面展示的具体代码,供大家参考,具体内容如下 首先需要新建四个文件 一个服务器js 一个保存数据的txt 一个登陆、一个注册页面html 1、注册页面 <...
    99+
    2022-06-04
    页面 node js
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作