页面展示

目录结构

在源码目录中创建如下结构:
- assets:用于存放资源文件
- components:用于存放 Vue 功能组件
- views:用于存放 Vue 视图组件
- router:用于存放 vue-router 配置
App.vue 是主页面 可以展示router-view相当于一个占位符 用来显示路由指定的页面
<template>
<div id="app">
<router-view/>
</div>
</template>
<script>
export default {
name: 'App',
components: {
}
}
</script>main.js 可以引入一些插件并使用它们
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './assets/css/global.css'
import ElementUI from 'element-ui'
Vue.use(ElementUI)
Vue.config.productionTip = false
new Vue({
router
render: h => h(App)
}).$mount('#app')login.vue 用来制作登录页面
<template>
<!-- <h2>你好</h2> -->
<div class="login_container">
<div class="login_box">
<!-- 头像区 -->
<div class="avatar_box">
<img src="../assets/logo.png">
</div>
<!-- 登陆表单区 -->
<el-form ref="loginFormRef" label-width="0px" class="login_form" :model="loginForm" :rules="loginFormRules">
<!-- 用户名 -->
<el-form-item label="" prop="username">
<el-input prefix-icon="iconfont icon-jurassic_user" v-model="loginForm.username"></el-input>
</el-form-item>
<!-- 密码 -->
<el-form-item label="" prop="password">
<el-input type="password" prefix-icon="iconfont icon-mima" v-model="loginForm.password"></el-input>
</el-form-item>
<!-- 按钮区 -->
<el-form-item label="" 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>login.vue <script> 部分 存储数据 验证用户名 没有登录不能访问除登录页面的其他页面
<script>
export default{
data(){
return {
// 这是登录表单数据绑定对象
loginForm: {
username: 'fei',
password: '123'
},
loginFormRules:{
// 验证用户名是否合法
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' }
]
}
}
},
methods: {
// 点击重置按钮 重置登陆表单
resetLoginForm(){
// console.log(this);
this.$refs.loginFormRef.resetFields();
},
// await 把函数修饰位异步函数只能用在 async 简化Promise
login(){
this.$refs.loginFormRef.validate(async valid =>{
// console.log(valid);
if(!valid) return;
const {data:res} = await this.$http.post("login",this.loginForm)
console.log(res);
if(res.meta.status !== 200) return this.$message.error('登录失败')
this.$message.success('登录成功');
// 1.将登陆成功的token保存到客户端的sessionStorage中
// 1.1 项目中除了登陆之外的其他API接口 必须再登录之后才能访问
// 1.2 token 只应在当前网站打开期间生效,所以将token保存在sessionStorage中
window.sessionStorage.setItem('token', res.data.token)
// 2. 通过编程式导航跳转到后台主页 路由地址是 /home
this.$router.push('/home')
})
}
}
}
</script>home.vue 提供一个登录成功的页面 点击退出后清空token
<template>
<div>
<el-button type="info" @click="logout">退出</el-button>
</div>
</template>
<script>
export default {
name: 'home',
components: {
},
methods: {
logout(){
window.sessionStorage.clear();
this.$router.push('/login');
}
}
}
</script>版权声明:本文为weixin_48247966原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。