vue-cli3|vue-cli3 + elementui 搭建后台管理界面(二)-首页
登录跳转-路由导航守卫
修改 src/main.js 加入
router.beforeEach((to, from, next) => {
if(to.path === '/login'){
sessionStorage.removeItem('user');
}
var user = sessionStorage.getItem('user');
if(!user && to.path !== '/login'){
next({
path: '/login'
})
}else{
next();
}
})
后台整体框架
src/components/Container.vue
文章图片
导航一
分组一
选项1
选项2
选项3
选项4
选项1
导航二
导航三
导航四
处理中心
我的工作台
选项1
选项2
选项3
选项4
选项1
选项2
选项3
消息中心
订单管理
{{ username }}
我的消息
设置
退出登录
.app {
$solidBorder: 1px solid #eee;
$sideCollapsedWidth: 66px;
$sideExpandedWidth: 230px;
font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
font-size: 1em;
width: 100%;
height: 100%;
min-width: 900px;
border: $solidBorder;
display: flex;
display: -webkit-flex;
flex-flow: row nowrap;
&-side {
width: 230px;
height: 100%;
&-left {
background-color: rgb(238, 241, 246);
}
&-logo {
background: #00A4FF;
height: 60px;
text-align: center;
}
&-fold {
padding-right: 15px;
font-size: 24px;
}
&-collapsed {
width: 66px!important;
.app-side-logo {
width: 66px;
}
}
&-expanded {
width: 230px!important;
}
}
&-header {
width: 100%;
height: 60px;
display: flex;
flex-flow: row nowrap;
justify-content: flex-start;
align-items: center;
border-bottom: $solidBorder;
&-userinfo {
position: absolute;
right: 0;
margin-right: 25px;
display: flex;
flex-flow: row nowrap;
height: 60px;
justify-content: flex-start;
align-items: center;
}
}
&-body {
font-size: 1em;
width: 100%;
height: 100%;
padding: 20px;
overflow-y: scroll;
}
&-footer {
width: 100%;
height: 60px;
}
}
在 router 导入容器组件
修改 src/router/index.js 为
import Vue from 'vue'
import Router from 'vue-router'
import Login from '../views/Login.vue'
import Container from '../components/Container.vue'Vue.use(Router)export default new Router({
routes: [
{
path: '/',
name: 'Container',
component: Container
},
{
path: '/login',
name: 'Login',
component: Login
},
]
})
修改 src/App.vue:
自定义css
新建 src/assets/css/index.scss
html {
height: 100%;
}body {
position: relative;
top: 0;
left: 0;
margin: 0;
padding: 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
height: 100%;
overflow: hidden;
}
.inline-block {
display: inline-block;
}
【vue-cli3|vue-cli3 + elementui 搭建后台管理界面(二)-首页】在 src/main.js 中引入该文件
import './assets/css/index.scss'
页面效果:
文章图片
1.png
文章图片
2.png
知识点1 会话存储 使用html5的 sessionStorage 对象临时保存会话
// 保存会话
sessionStorage.setItem('user', username)
// 删除会话
sessionStorage.removeItem('user', username)
2 将所有未登录会话重定向到 /login 用 vue-router 的 beforeEach 实现
beforeEach 方法接收三个参数:
- to: Route: 即将要进入的目标 路由对象
- from: Route: 当前导航正要离开的路由
- next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。
推荐阅读
- 六步搭建ES6语法环境
- (1)redis集群原理及搭建与使用(1)
- 桁架搭建有什么价值()
- VM|VM ware 的 harbor 私有仓库搭建 (Ubuntu16.04)
- PHP开发-Mac搭建ThinkPHP5.0
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- sentry搭建错误监控系统(二)
- 【乐高创意作品】超智能!这款乐高搭建的除草机!
- 8、Flask构建弹幕微电影网站-搭建后台页面-密码修改、主页控制面板
- 适用于小白(VSCode搭建Vue项目,最详细的搭建步骤哦)