基于vue登錄界面的實(shí)現(xiàn)

以下布局代碼

1. vue怎么引入和配置使用element-ui框架

? 1.1 使用vue-cli腳手架工具創(chuàng)建一個(gè)vue項(xiàng)目

? ? ? vue init webpack vuelogin

? 1.2 npm安裝elementUI

? ? ? cd vuelogin#進(jìn)入新建項(xiàng)目的根目錄

? ? ? npm install element-ui -S? ? ? ? ? ? ? ? ? #安裝element-ui模塊

? ## 重要的事情說(shuō)三遍:在指定位置!!!在指定位置!!!在指定位置!!!~~~添加三行代碼

? 1.3 在項(xiàng)目中src目錄下找到main.js瑟押,并在指定位置添加三行代碼(main.js是入口文件虹钮,所以在這里引入就行,頁(yè)面就不用引入了)

? ? ? import Vue from 'vue'

? ? ? import ElementUI from 'element-ui' //新添加1

? ? ? import 'element-ui/lib/theme-chalk/index.css' //新添加2晤锹,避免后期打包樣式不同凤薛,要放在import App from './App';之前


? ? ? import App from './App'

? ? ? import router from './router'

? ? ? Vue.use(ElementUI)? //新添加3

? ? ? Vue.config.productionTip = false

1.5:main.js

import Vue from 'vue'

import App from './App.vue'

import router from './router'

import './plugins/element.js'

// 導(dǎo)入字體圖標(biāo)

import './assets/fonts/iconfont.css'

// 導(dǎo)入全局樣式表

import './assets/css/global.css'

import axios from 'axios'

// 配置請(qǐng)求的跟路徑

axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/'

Vue.prototype.$http = axios

Vue.config.productionTip = false

new Vue({

? router,

? render: h => h(App)

}).$mount('#app')

2:router.js

import Vue from 'vue'

import Router from 'vue-router'

import Login from './components/Login.vue'

import Home from './components/Home.vue'

Vue.use(Router)

const router = new Router({

? routes: [

? ? { path: '/', redirect: '/login' },

? ? { path: '/login', component: Login },

? ? { path: '/home', component: Home }

? ]

})

// 掛載路由導(dǎo)航守衛(wèi),防止跳過(guò)登錄界面進(jìn)入用戶(hù)界面

// router.beforeEach((to, from, next) => {

// ? // to 將要訪問(wèn)的路徑

// ? // from 代表從哪個(gè)路徑跳轉(zhuǎn)而來(lái)

// ? // next 是一個(gè)函數(shù),表示放行

// ? // ? ? next() ?放行 ? ?next('/login') ?強(qiáng)制跳轉(zhuǎn)

// ? if (to.path === '/login') return next()

// ? // 獲取token

// ? const tokenStr = window.sessionStorage.getItem('token')

// ? if (!tokenStr) return next('/login')

// ? next()

//})

//暴露路由

export default router

3:login.vue


<template>

? <div class="login_container">

? ? <div class="login_box">

? ? ? <!-- 頭像區(qū)域 -->

? ? ? <div class="avatar_box">

? ? ? ? <img src="../assets/logo.png" alt="">

? ? ? </div>

? ? ? <!-- 登錄表單區(qū)域 -->

? ? ? <el-form ref="loginFormRef" :model="loginForm" :rules="loginFormRules" label-width="0px" class="login_form">

? ? ? ? <!-- 用戶(hù)名 -->

? ? ? ? <el-form-item prop="username">

? ? ? ? ? <el-input v-model="loginForm.username" prefix-icon="iconfont icon-user"></el-input>

? ? ? ? </el-form-item>

? ? ? ? <!-- 密碼 -->

? ? ? ? <el-form-item prop="password">

? ? ? ? ? <el-input v-model="loginForm.password" prefix-icon="iconfont icon-3702mima" type="password"></el-input>

? ? ? ? </el-form-item>

? ? ? ? <!-- 按鈕區(qū)域 -->

? ? ? ? <el-form-item class="btns">

? ? ? ? ? <el-button type="primary" @click="login">登錄</el-button>

? ? ? ? ? <el-button type="info" @click="resetLoginForm">重置</el-button>

? ? ? ? </el-form-item>

? ? ? </el-form>

? ? </div>

? </div>

</template>

<script>

export default {

? data() {

? ? return {

? ? ? // 這是登錄表單的數(shù)據(jù)綁定對(duì)象

? ? ? loginForm: {

? ? ? ? username: 'admin',

? ? ? ? password: '123456'

? ? ? },

? ? ? // 這是表單的驗(yàn)證規(guī)則對(duì)象

? ? ? loginFormRules: {

? ? ? ? // 驗(yàn)證用戶(hù)名是否合法

? ? ? ? username: [

? ? ? ? ? { required: true, message: '請(qǐng)輸入登錄名稱(chēng)', trigger: 'blur' },

? ? ? ? ? { min: 3, max: 10, message: '長(zhǎng)度在 3 到 10 個(gè)字符', trigger: 'blur' }

? ? ? ? ],

? ? ? ? // 驗(yàn)證密碼是否合法

? ? ? ? password: [

? ? ? ? ? { required: true, message: '請(qǐng)輸入登錄密碼', trigger: 'blur' },

? ? ? ? ? { min: 6, max: 15, message: '長(zhǎng)度在 6 到 15 個(gè)字符', trigger: 'blur' }

? ? ? ? ]

? ? ? }

? ? }

? },

? methods: {

? ? // 點(diǎn)擊重置按鈕,重置登錄表單

? ? resetLoginForm() {

? ? ? // console.log(this);

? ? ? this.$refs.loginFormRef.resetFields()

? ? },

? ? login() {

? ? ? this.$refs.loginFormRef.validate(async valid => {

? ? ? ? if (!valid) return

? ? ? ? const { data: res } = await this.$http.post('login', this.loginForm)

? ? ? ? if (res.meta.status !== 200) return this.$message.error('登錄失敻恰!')

? ? ? ? this.$message.success('登錄成功')

? ? ? ? // 1. 將登錄成功之后的 token疗琉,保存到客戶(hù)端的 sessionStorage 中

? ? ? ? // ? 1.1 項(xiàng)目中出了登錄之外的其他API接口冈欢,必須在登錄之后才能訪問(wèn)

? ? ? ? // ? 1.2 token 只應(yīng)在當(dāng)前網(wǎng)站打開(kāi)期間生效,所以將 token 保存在 sessionStorage 中

? ? ? ? window.sessionStorage.setItem('token', res.data.token)

? ? ? ? // 2. 通過(guò)編程式導(dǎo)航跳轉(zhuǎn)到后臺(tái)主頁(yè)盈简,路由地址是 /home

? ? ? ? this.$router.push('/home')

? ? ? })

? ? }

? }

}

</script>

<style lang="less" scoped>

.login_container {

? background-color: #2b4b6b;

? height: 100%;

}

.login_box {

? width: 450px;

? height: 300px;

? background-color: #fff;

? border-radius: 3px;

? position: absolute;

? left: 50%;

? top: 50%;

? transform: translate(-50%, -50%);

? .avatar_box {

? ? height: 130px;

? ? width: 130px;

? ? border: 1px solid #eee;

? ? border-radius: 50%;

? ? padding: 10px;

? ? box-shadow: 0 0 10px #ddd;

? ? position: absolute;

? ? left: 50%;

? ? transform: translate(-50%, -50%);

? ? background-color: #fff;

? ? 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;

}

</style>

4:app.vue

<template>

? <div id="app">

? ? <!-- 路由占位符 -->

? ? <router-view></router-view>

? </div>

</template>

<script>

export default {

? name: 'app'

}

</script>

<style>

</style>

2. 后臺(tái)交互(axios/qs/vue-axios)

? 3.1 axios

? ? ? axios是vue2提倡使用的輕量版的ajax凑耻。它是基于promise的HTTP庫(kù)。它會(huì)從瀏覽器中創(chuàng)建XMLHttpRequests柠贤,與Vue配合使用非常好香浩。


? ? ? 1.題外話:

? ? ? vue.js有著名的全家桶系列:vue-router,vuex臼勉, vue-resource邻吭,再加上構(gòu)建工具vue-cli,就是一個(gè)完整的vue項(xiàng)目的核心構(gòu)成宴霸。

? ? ? 其中vue-resource是Vue.js的一款插件囱晴,它可以通過(guò)XMLHttpRequest或JSONP發(fā)起請(qǐng)求并處理響應(yīng),但在vue更新到2.0之后瓢谢,

? ? ? 作者就宣告不再對(duì)vue-resource更新畸写,而是推薦的axios

? ? 1.安裝

? ? ? npm install axios -S

? ? ? npm install qs -S?

? ? ? npm install vue-axios -S?



原文鏈接:https://blog.csdn.net/qq_44224377/article/details/118227186

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市氓扛,隨后出現(xiàn)的幾起案子枯芬,更是在濱河造成了極大的恐慌,老刑警劉巖采郎,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件千所,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡尉剩,警方通過(guò)查閱死者的電腦和手機(jī)真慢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)理茎,“玉大人,你說(shuō)我怎么就攤上這事管嬉≡砹郑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蚯撩,是天一觀的道長(zhǎng)础倍。 經(jīng)常有香客問(wèn)我,道長(zhǎng)胎挎,這世上最難降的妖魔是什么沟启? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任忆家,我火速辦了婚禮,結(jié)果婚禮上德迹,老公的妹妹穿的比我還像新娘芽卿。我一直安慰自己,他們只是感情好胳搞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布卸例。 她就那樣靜靜地躺著,像睡著了一般肌毅。 火紅的嫁衣襯著肌膚如雪筷转。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天悬而,我揣著相機(jī)與錄音呜舒,去河邊找鬼。 笑死笨奠,一個(gè)胖子當(dāng)著我的面吹牛袭蝗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播艰躺,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼呻袭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了腺兴?” 一聲冷哼從身側(cè)響起左电,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎页响,沒(méi)想到半個(gè)月后篓足,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闰蚕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年栈拖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片没陡。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涩哟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盼玄,到底是詐尸還是另有隱情贴彼,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布埃儿,位于F島的核電站器仗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜精钮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一威鹿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧轨香,春花似錦忽你、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至策橘,卻和暖如春炸渡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丽已。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工蚌堵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沛婴。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓吼畏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親嘁灯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泻蚊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容