VUE腳手架框架編寫簡潔的登錄界面的實現
前言
一個好的前端開發(fā)項目,都是一個團隊負責一個部分進行通力合作的。簡單的一個系統網站一般包含登錄、主體、各個模塊功能這三個大部分,現在我們寫的登錄界面,我們一般編寫這樣的登錄界面可以說有一定的固定套路。
安裝Vue腳手架
1、我們一Windows 10為例子,安裝Vue 3腳手架前,我們先要配置node js環(huán)境;
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
創(chuàng)建登錄界面的文件--login.Vue
安裝完畢后,這里本人使用的是vscode軟件,創(chuàng)建一個登錄模塊的目錄頁,

配置路由-- 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這里我們掛載一個路由守衛(wèi),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>
<!-- 登陸表單區(qū)域 -->
<el-form label-width="0px" class="login_form" :model="loginForm" :rules="loginFormRules" ref="loginFormRef">
<!-- :model數據綁定對象,綁定到login from這個表單中,rules表單的驗證規(guī)則對象 -->
<!-- 用戶登錄 -->
<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>
<!-- 按鈕區(qū)域 -->
<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 登錄界面內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue項目中常見的三種文件類型在線預覽實現(pdf/word/excel表格)
最近在項目中要做一個pdf在線預覽的功能,索性給大家整理個全面的,這篇文章主要給大家介紹了關于vue項目中常見的三種文件類型在線預覽實現的相關資料,文件類型分別是pdf/word文件/excel表格,需要的朋友可以參考下2022-05-05

