VUE脚手架框架编写简洁的登录界面的实现

目录
  • 前言
  • 安装Vue脚手架
  • 创建登录界面的文件--login.Vue
  • 配置路由-- router.js
  • 配置main.js
  • 编写登录界面--Login.Vue
  • 总结

前言

一个好的前端开发项目,都是一个团队负责一个部分进行通力合作的。简单的一个系统网站一般包含登录、主体、各个模块功能这三个大部分,现在我们写的登录界面,我们一般编写这样的登录界面可以说有一定的固定套路。

安装Vue脚手架

1、我们一Windows 10为例子,安装Vue 3脚手架前,我们先要配置node js环境;

2、接下来,安装Vue,安装的过程不多说,大家可以到官网去自行下载就可以了,链接Vue.js;Vue.js - The Progressive JavaScript

或者,可以选择另一种安装方式:

打开控制台,输入一下命令行

npm install vue -g

3、等待安装Vue,还需安装Vue-cli (脚手架),输入如下命令进行安装

npm install -g vue-cli

4、对项目文件进行初始化 还可以使用webpack作为脚手架,命令如下:

vue init webpack qiubite-project

创建登录界面的文件--login.Vue

安装完毕后,这里本人使用的是vscode软件,创建一个登录模块的目录页,

配置路由-- router.js

接下来,我们要把vue的router路由配置给配置好,如下:

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

Vue.use(VueRouter)

const router = new VueRouter({
  routes: [
    { path: '/', redirect: '/login' },
    { path: '/login', component: Login },
    {
      path: '/home',
      component: Home,
      redirect: '/equipment', // 重定向功能,只要访问home地址,就会重定向到wequipment地址
      children: [
      { path: '/equipment', component: Equip },
      { path: '/deploy', component: Deploy },
      { path: '/history', component: History },
      { path: '/analysis', component: Analysis },
      { path: '/power', component: Power },
      { path: '/remote', component: Remote }]// welcome为home的子属性
    }
  ],
  mode: 'history'
})

router.beforeEach((to, from, next) => {
  if (to.path === '/login') return next()
  const tokenStr = window.sessionStorage.getItem('token')
  if (!tokenStr) return next('/login')
  next()
})
export default router

这里我们挂载一个路由守卫,router.beforeEach,这里面to将要访问的路径,from 代表从哪一个路径跳到哪一个去beforeEach,next 是一个函数,表示放行,next()放行 next('/login)强制跳转。用户如果访问login,可以直接跳转,获取token。

配置main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
// 导入全局样式表
import './assets/css/global.css'

 import axios from 'axios'
 axios.defaults.baseURL = 'http://39.101.161.112:9000'
 axios.interceptors.request.use(config => {
   console.log(config)
   config.headers.Authorization = window.sessionStorage.getItem('token')
   // 通过axios拦截器添加token验证
   return config
   // 最后必须要return出去
 })
 Vue.prototype.$http = axios

Vue.config.productionTip = false
Vue.use(ElementUI)
Vue.use(AMap)
Vue.use(VideoPlayer)

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

编写登录界面--Login.Vue

<template>
    <div class="login_container">
        <!-- 登录模块盒子 -->
<div class="login-box">
<!-- 图片盒子 -->
<div class="avatar_box">
    <img src="../assets/wo.jpg" alt="">
    <h3 class="text">丘 比 特</h3>
</div>
<!-- 登陆表单区域 -->
<el-form label-width="0px" class="login_form" :model="loginForm" :rules="loginFormRules" ref="loginFormRef">
    <!-- :model数据绑定对象,绑定到login from这个表单中,rules表单的验证规则对象 -->
    <!-- 用户登录 -->
  <el-form-item prop="username">
    <el-input  prefix-icon="el-icon-user-solid" v-model="loginForm.username" size="mini" ></el-input>
    <!-- v-model双向绑定,绑定到用户名 -->
  </el-form-item>
  <!-- 密码 -->
  <el-form-item prop="password">
    <el-input  prefix-icon="el-icon-lock" v-model="loginForm.password" type="password" size="mini" ></el-input>
     <!-- v-model双向绑定,绑定到用户登录密码,type="password可以使得密码隐藏"-->
  </el-form-item>
  <!-- 按钮区域 -->
  <el-form-item class="btns">
    <el-button type="primary" @click="login" size="mini" >登录</el-button>
    <!-- 为登录绑定一个单击事件,名为login -->
    <el-button type="info" @click="resetLoginForm" size="mini">取消</el-button>
    <!-- click绑定单击事件,名为resetloginfrom -->
  </el-form-item>
  </el-form>
    </div>
</div>
</template>

<script>
import {Login} from '../network/login'
export default {
  data () {
    return {
      loginForm: {
        username: '',
        password: ''
      },
      loginFormRules: {
        username: [
          { required: true, message: '请输入登录名称', trigger: 'blur' },
          { min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
        ],
        password: [
          { required: true, message: '请输入登录密码', trigger: 'blur' },
          { min: 3, max: 15, message: '长度在 3 到 15 个字符', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    resetLoginForm () {
      this.$refs.loginFormRef.resetFields()
    },
    login () {
      this.$refs.loginFormRef.validate( valid => {
        if (!valid) {return this.$message.error('用户名密码不正确')}
      Login(this.loginForm).then( res => {
        console.log(res);
        if (res.code !== 0)
         {return this.$message.error('登录失败')}
        this.$message.success('登陆成功')
        window.sessionStorage.setItem('token', res.token)
        this.$router.push('/home')
      }).catch( error => {
        console.log(error);
      })
      })
    }
  }
}
</script>

<style lang="less" scoped>
.login_container {
    background-color: #0e1729;
    background-image: url(../assets/pic2.png);
    height: 100%;
}
.login-box {
    width: 360px;
    height: 240px;
    background-color: #fff;
    border-radius: 3px;
    position: absolute;
    left: 50%; //距离左侧50%
    top: 50%; // 距离顶部505
    transform: translate(-50%, -50%); //横轴上移动50%,纵移动50%
}
 .avatar_box {
        height: 100px;
        width: 100px;
        border: 1px solid #eee;
        border-radius: 50%;
        padding: 10px;
        box-shadow: 0 0 10px #eee;
        position: absolute;
        left: 50%;
        top:-40%;
        transform: translate(-50%);
        background-color: rgb(32, 181, 201);
        img {
            width: 100%;
            height: 100%;
            border-radius: 50%;
            background-color: #eee;
        }
    }

.login_form {
    position: absolute;
    bottom: 0;
    width: 100%;
    padding: 0 20px;
    box-sizing: border-box;
}
    .btns {
        display: flex;
        justify-content: flex-end;
    }
    .text {
      text-align: center;
      margin-top: 10px;
      font-size: 20px;
      font-family: 宋体;
    }
</style>

1、 validate回调函数,完成登录表单前的预校验;

2、将登陆成功以后的token,保存到客户端的sessionstorage中;

3、项目中除了登陆之外的其他api接口,必须将token保存到客户端;

4、 this.$router.push('/home)是通过编程式导航跳转到后台,路由地址为/home。

结果展示

总结

用户登录首先完成账号密码输入,当用户进行账户密码登录操作,系统将验对账户密码进行查询、登录表单数据绑定验证。当用户登录成功时,用户信息将会被记录到session中,用户信息将会被记录到系统日志中,再通过重定向即可跳转到系统首页。当用户登录失败时,系统弹出“登陆失败,请重新登录”提示信息。当用户登录账户密码不合法时,系统将弹出“登录信息不合法”提示信息,用户需进行账户密码重置重新登陆。如下是用户登录界面的时序图:

到此这篇关于VUE脚手架框架编写简洁的登录界面的实现的文章就介绍到这了,更多相关VUE 登录界面内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Vue 实现登录界面验证码功能

    登录界面 SIdentify 创建验证码组件,实现绘画出图片验证码 <template> <div class="s-canvas"> <canvas id="s-canvas" :width="contentWidth" :height="contentHeight"></canvas> </div> </template> <script>

  • vue实现登录界面

    使用Vue实现简单的用户登录界面,登录成功以后查询账号用户类型进行相应的页面路由跳转,效果如下图所示: HTML部分: <div class="loginbody">     <div class="login">       <div class="mylogin" align="center">         <h4>登录</h4>         <el

  • 如何利用vue+element ui实现好看的登录界面

    目录 界面效果图 下面直接上代码: 附加背景图片 总结 闲暇之余使用vue+element ui制作了个登录界面 话不多说,先上 界面效果图 下面直接上代码: <template> <div class="loginbody"> <div class="logindata"> <div class="logintext"> <h2>Welcome</h2> </div&

  • Vue实现简单登录界面

    本文实例为大家分享了Vue实现简单登录界面的具体代码,供大家参考,具体内容如下 实现: 界面实现 表单规则校验 结合后台 api 校验 提示消息 App.vue <template>   <div id="app"> <!--路由占位符 -->    <router-view></router-view>   </div> </template> <script> export defaul

  • VUE脚手架框架编写简洁的登录界面的实现

    目录 前言 安装Vue脚手架 创建登录界面的文件--login.Vue 配置路由-- router.js 配置main.js 编写登录界面--Login.Vue 总结 前言 一个好的前端开发项目,都是一个团队负责一个部分进行通力合作的.简单的一个系统网站一般包含登录.主体.各个模块功能这三个大部分,现在我们写的登录界面,我们一般编写这样的登录界面可以说有一定的固定套路. 安装Vue脚手架 1.我们一Windows 10为例子,安装Vue 3脚手架前,我们先要配置node js环境: 2.接下来,

  • electron vue 模仿qq登录界面功能实现

    目录 1.使用vuecli创建vue项目 2.安装electron 3.vue项目安装Electron-builder打包工具 4.在vue项目的src下有个background.js文件 5.安装remote模块 6.代码 7.效果图 1.使用vuecli创建vue项目 我用的vue2 vue create qq_test 2.安装electron npm install electron -g //or npm install electron@12.0.11 //老版本 3.vue项目安装

  • Android实现简洁的APP登录界面

    今天需求要做一个所有app都有的登录界面,正好巩固一下我们之前学的基础布局知识. 先来看下效果图 1.布局的xml文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent&qu

  • Vue脚手架编写试卷页面功能

    脚手架(vue-cli) (一)什么是脚手架 概念:是一种用于快速开发Vue项目的系统架构 优点:能够帮助咱们快速的开发项目 缺点:由于脚手架适用于各种项目的开发,而不是单独的针对某一项目单独研发的,会出现代码冗余 脚手架的使用: 1.安装脚手架 vue-cli 全局安装打开cmd运行:cnpm install -g @vue/cli 2.查看当前版本号: vue -V 3.创建项目: 根目录下打开cmd运行:vue create objectname项目名称(名称不能有大写) 正文开始 Vue

  • java代码块之简易qq登录界面及按钮颜色设置代码

    本文主要分享了关于简洁版qq登录界面及按钮颜色设置的相关代码,供参考. java代码块 公共包(初始化窗口位置) package util; import java.awt.Dimension; import java.awt.Toolkit; import javax.swing.JFrame; //图形化界面的工具类 public class FrameUtil { //设置窗体出现在中间位置 public static void initFrame(JFrame frame,int wid

  • python基于twisted框架编写简单聊天室

    本文实例为大家分享了使用python的twisted框架编写一个简单的聊天室具体代码,供大家参考,具体内容如下 下面是基本架构 代码: # -*- coding:utf-8 -*- from twisted.internet.protocol import Factory from twisted.protocols.basic import LineReceiver from twisted.internet import reactor user = {} class ChatReci(Li

随机推荐