09 . Vue登录,注册组件及主页布局,用户管理,数据统计功能

vue

开发模式

前后端分离

前端技术栈

/*

Vue

Vue-Router

Element-UI

Axios

Echarts

*/

后端项目技术栈

/*

Node.js

Express

Jwt

Mysql

Sequelize

*/

项目初始化

初始化步骤

/*

1.安装Vue脚手架

2.通过Vue脚手架创建项目

3.配置Vue路由

4.配置Element-UI组件库

5.配置axios库

6.初始化git远程仓库

7.将本地项目托管到Github或码云中

*/

创建项目请看我写的前面Vue脚手架创建使用

https://www.cnblogs.com/you-men/p/14015406.html

后台项目环境安装配置

mysql

create database mydb charset=utf8;

use mydb

source /root/mydb.sql

测试后台接口是否正常

登录概述

登录业务流程

/*

1. 在登录页输入用户名和密码

2. 调用后台接口进行验证

3. 通过验证之后,根据后台的响应状态跳转到项目主页

*/

登录业务技术点

/*

1. http是无状态的

2. 通过cookie在客户端记录状态

3. 通过session在服务器端记录状态

4. 通过token方式维持状态

*/

token原理分析

token登录实现

登录页面布局

通过Element-UI组件实现布局

/*

el-form

el-form-item

el-input

el-button

字体图标

*/

每当我们开发一个新功能最好开一个新分支,开发完毕没问题再合并到Master分支

/*

git checkout -b

git checkout -b login 创建login分支

git branch 查看当前所有分支

*/

路由导航守卫控制访问权限

如果用户没有登录,但是直接通过URL访问特定页面,需要重新导航到登录页面

// 为路由对象,添加beforeEach 导航守卫

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

// 如果用户访问的登录页,直接放行

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

// 从sessionStorage中获取保存的token值

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

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

next()

})

退出功能

基于token的方式实现退出比较简单,只需要销毁本地的token即可,这样后续的请求就不会携带token, 必须重新登录生成一个新的token之后才可以访问页面

// 清空token

window.sessionStorage.clear()

// 跳转到登录页

this.$router.push('/login')

提交登录功能

git提交

git add .

git commit -m "add login Features"

git branch

* login

master

git branch

login

* master

git merge login

git push

主页布局

通过接口获取菜单数据

通过axios请求拦截器添加token,保证有获取数据的权限

// axios请求拦截

axios.inteerceptors.request.use(config => {

// 为请求头对象,添加Token验证的Authorization字段

config.headers.Authorization = window.sessionStorage.getItem('token')

return config

})

提交用户代码

git checkout -b user

git branch

login

master

* user

git add .

git commit -m "完成用户列表功能的开发"

git push -u origin user

git checkout master

git merge user

git push

权限功能开发

创建新分支

git checkout -b rights

git push -u origin rights

权限管理业务分析

通过权限管理模块控制不同的用户可以进行哪些操作,具体可以通过角色的方式进行控制, 即每个用户分配一个特定的角色,角色包括不通的功能权限.

获取渲染权限列表

获取渲染角色列表

提交权限功能代码

git add .

git commit -m "完成权限功能开发"

git push

git checkout master

git merge rights

git push

分类管理

数据统计功能

创建新分支

git checkout -b report

git push -u origin report

配置路由报表组件

数据报表功能

简单使用echarts

<template>

<div>

<!-- 面包屑导航区域 -->

<el-breadcrumb separator-class="el-icon-arrow-right">

<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>

<el-breadcrumb-item>数据统计</el-breadcrumb-item>

<el-breadcrumb-item>数据报表</el-breadcrumb-item>

</el-breadcrumb>

<!-- 卡片视图区域 -->

<el-card>

<!-- 2.为Echarts准备一个具备大小(宽高)的Dom -->

<div ></div>

</el-card>

</div>

</template>

<script>

// 1. 导入echarts

import echarts from 'echarts'

export default {

mounted() {

// 3.只有执行到mounted,页面上的元素渲染完毕,可以初始化图表了

var myChart = echarts.init(document.getElementById('main'))

// 4. 准备数据和配置项

var option = {

title: {

text: 'ECharts 入门示例'

},

tooltip: {},

legend: {

data: ['销量']

},

xAxis: {

data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]

},

yAxis: {},

series: [{

name: '销量',

type: 'bar',

data: [5, 20, 36, 10, 10, 20]

}]

}

// 5. 展示数据

myChart.setOption(option)

},

methods: {}

}

</script>

<style lang="less" scoped>

</style>

基于时间统计的折线图

<template>

<div>

<!-- 面包屑导航区域 -->

<el-breadcrumb separator-class="el-icon-arrow-right">

<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>

<el-breadcrumb-item>数据统计</el-breadcrumb-item>

<el-breadcrumb-item>数据报表</el-breadcrumb-item>

</el-breadcrumb>

<!-- 卡片视图区域 -->

<el-card>

<!-- 2.为Echarts准备一个具备大小(宽高)的Dom -->

<div ></div>

</el-card>

</div>

</template>

<script>

// 1. 导入echarts

import echarts from 'echarts'

import _ from 'lodash'

export default {

data() {

return {

// 需要合并的数据

options: {

title: {

text: '用户来源'

},

tooltip: {

trigger: 'axis',

axisPointer: {

type: 'cross',

label: {

backgroundColor: '#E9EEF3'

}

}

},

grid: {

left: '3%',

right: '4%',

bottom: '3%',

containLabel: true

},

xAxis: [{

boundaryGap: false

}],

yAxis: [{

type: 'value'

}]

}

}

},

async mounted() {

// 3.只有执行到mounted,页面上的元素渲染完毕,可以初始化图表了

var myChart = echarts.init(document.getElementById('main'))

const {

data: res

} = await this.$http.get('reports/type/1')

if (res.meta.status !== 200) {

return this.$message.error('获取折线图数据失败!')

}

// 4. 准备数据和配置项

const result = _.merge(res.data,this.options)

// 5. 展示数据

myChart.setOption(result)

},

methods: {}

}

</script>

<style lang="less" scoped>

</style>

添加进度条

/*

npm install --save nprogress

*/

基于拦截器实现进度条

import NProgress from 'nprogress'

import 'nprogress/nprogress.css'

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

// 在request拦截器中展示进度条 NProgress.start()

axios.interceptors.request.use(config => {

// 为请求头对象,添加Token验证的Authorization字段

// 在最后必须return config

// console.log(config)

NProgress.start()

config.headers.Authorization = window.sessionStorage.getItem('token')

return config

})

// 在response 拦截器中隐藏进度条 NProgress.donne()

axios.interceptors.response.use(config =>{

NProgress.done()

return config

})

以上是 09 . Vue登录,注册组件及主页布局,用户管理,数据统计功能 的全部内容, 来源链接: utcz.com/z/378965.html

回到顶部