前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >09 . Vue登录,注册组件及主页布局,用户管理,数据统计功能

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

作者头像
iginkgo18
发布2022-05-09 15:45:48
5250
发布2022-05-09 15:45:48
举报
文章被收录于专栏:devops_k8sdevops_k8s
开发模式
前后端分离
前端技术栈
代码语言:javascript
复制
/*
		Vue
		Vue-Router
		Element-UI
		Axios
		Echarts
*/
后端项目技术栈
代码语言:javascript
复制
/*
		Node.js
		Express
		Jwt
		Mysql
		Sequelize
*/
项目初始化
初始化步骤
代码语言:javascript
复制
/*
		1.安装Vue脚手架
		2.通过Vue脚手架创建项目
		3.配置Vue路由
		4.配置Element-UI组件库
		5.配置axios库
		6.初始化git远程仓库
		7.将本地项目托管到Github或码云中
*/	

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

https://cloud.tencent.com/developer/article/1751290

后台项目环境安装配置
代码语言:javascript
复制
mysql

create database mydb charset=utf8;
use mydb
source /root/mydb.sql
测试后台接口是否正常
登录概述
登录业务流程
代码语言:javascript
复制
/*
		1. 在登录页输入用户名和密码
		2. 调用后台接口进行验证
		3. 通过验证之后,根据后台的响应状态跳转到项目主页
*/
登录业务技术点
代码语言:javascript
复制
/*
		1. http是无状态的
		2. 通过cookie在客户端记录状态
		3. 通过session在服务器端记录状态
		4. 通过token方式维持状态
*/
token原理分析
token登录实现
登录页面布局

通过Element-UI组件实现布局

代码语言:javascript
复制
/*
		el-form
		el-form-item
		el-input
		el-button
		字体图标
*/

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

代码语言:javascript
复制
/*
		git checkout -b
		git checkout -b login  创建login分支
		git branch  查看当前所有分支
*/
路由导航守卫控制访问权限

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

代码语言:javascript
复制
// 为路由对象,添加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之后才可以访问页面

代码语言:javascript
复制
// 清空token
window.sessionStorage.clear()

// 跳转到登录页
this.$router.push('/login')
提交登录功能
git提交
代码语言:javascript
复制
git add .
git commit -m "add login Features"
git branch 
* login
  master
git branch
  login
* master
git merge login
git push
主页布局
通过接口获取菜单数据

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

代码语言:javascript
复制
// axios请求拦截
axios.inteerceptors.request.use(config => {
  // 为请求头对象,添加Token验证的Authorization字段
  config.headers.Authorization = window.sessionStorage.getItem('token')
  return config
})
提交用户代码
代码语言:javascript
复制
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
权限功能开发
创建新分支
代码语言:javascript
复制
git checkout -b rights
git push -u origin rights
权限管理业务分析

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

获取渲染权限列表
获取渲染角色列表
提交权限功能代码
代码语言:javascript
复制
git add .
git commit -m "完成权限功能开发"
git push
git checkout master

git merge rights
git push
分类管理
数据统计功能
创建新分支
代码语言:javascript
复制
git checkout -b report
git push -u origin report
配置路由报表组件
数据报表功能
简单使用echarts
代码语言:javascript
复制
<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 id="main" style="width: 600px;height:400px;"></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>
基于时间统计的折线图
代码语言:javascript
复制
<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 id="main" style="width: 750px;height:400px;"></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>
添加进度条
代码语言:javascript
复制
/*
  npm install --save nprogress
*/

基于拦截器实现进度条

代码语言:javascript
复制
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
})
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发模式
    • 前后端分离
      • 前端技术栈
        • 后端项目技术栈
        • 项目初始化
          • 初始化步骤
            • 后台项目环境安装配置
              • 测试后台接口是否正常
              • 登录概述
                • 登录业务流程
                  • 登录业务技术点
                    • token原理分析
                    • token登录实现
                      • 登录页面布局
                        • 路由导航守卫控制访问权限
                          • 退出功能
                          • 提交登录功能
                            • git提交
                            • 主页布局
                              • 通过接口获取菜单数据
                              • 提交用户代码
                              • 权限功能开发
                                • 创建新分支
                                  • 权限管理业务分析
                                    • 获取渲染权限列表
                                      • 获取渲染角色列表
                                        • 提交权限功能代码
                                        • 分类管理
                                        • 数据统计功能
                                          • 创建新分支
                                            • 配置路由报表组件
                                              • 数据报表功能
                                                • 简单使用echarts
                                                  • 基于时间统计的折线图
                                                    • 添加进度条
                                                    相关产品与服务
                                                    腾讯云 BI
                                                    腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
                                                    领券
                                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档