中后台学习
页面的主要路由分析
全局是一个大的容器,
APP.vue
,然后显示的组件时layout
,layout
组件的构成
slide-bar
header
app-main 其中
app-main
也是一个容器,承载页面的主要内容,用router-view
显示子路由
{
path: '/',
component: Layout,
redirect: '/dashboard',
children: [{
path: 'dashboard',
name: 'Dashboard',
component: () => import('@/views/dashboard/index'),
meta: { title: 'Dashboard', icon: 'dashboard' }
}]
},可以看出,
layout
组件的app-main
就是主要内容
添加一个页面
{ |
权限校验
生成权限菜单
在async-router
上配置路由元信息,增加roles
属性
{ |
修改配置代理接口
首先关闭mock数据
注释以下代码
main.js
if (process.env.NODE_ENV === 'production') { |
vue.config.js
devServer |
更改axios
的baseUrl
修改环境配置文件 全局变量 |
登录源码分析
handleLogin() { |
vuex
中的user
|
分析:
登录分为几步操作
- 校验表单,提交数据
- 执行
vuex
的commit,请求服务端数据然后保存token
到cookie
和vuex
当中,返回promise·resolve
- 请求导数据后路由重定向到
redirect
,如果没有就重定向到/
获取用户信息
1. 携带`token`请求接口 2. 获取`roles`,`avatar`,`name`,其中`roles`必须存在 3. 保存数据在`vuex`
退出登录
1. 清除`cookie`中的数据 2. 将`vuex`用户信息置空 3. 路由重定向,此时不携带`token`,路由会定位到`login`
其中这两个接口返回的数据相对固定
登录
{
"data":{
token:""
}
}
获取用户信息
{
"data":{
avatar:"",
name:"",
roles:['admin'...]
}
}
框架的路由权限分析
访问路由时会从 Cookie 中获取 Token,判断 Token 是否存在:
- 如果 Token 存在,将根据用户角色生成动态路由,然后访问路由,生成对应的页面组件。这里有一个特例,即用户访问
/login
时会重定向至/
路由; - 如果 Token 不存在,则会判断路由是否在白名单中,如果在白名单中将直接访问,否则说明该路由需要登录才能访问,此时会将路由生成一个 redirect 参数传入 login 组件,实际访问的路由为:
/login?redirect=/xxx
。
router.beforeEach(async(to, from, next) => { |
图表
折线图
<template> |
饼图
<template> |
表格
无边框表格
<el-table |
具体配置参考element-ui
文档
有边框文档
<el-table |
综合表格
<div class="app-container"> |
导出Excel表格
引入vue-element-admin
提供的导出js
文件
handleDownload() { |
websocket
服务端
const WebSocket = require('ws') |
客户端
变量均用双向绑定定义
|
实例(服务端)
const WebSocket = require('ws') |
实例(客户端)
监听开启websocket
mounted() { |
监听进入房间
enter() { |
监听传来的消息
// 接收信息 |
发送消息
// 发送消息 |
监听错误或者推出
|
客户端完整代码
<template> |