Spring Cloud + Vue前后端分离-第14章 项目优化

 源代码在GitHub - 629y/course: Spring Cloud + Vue前后端分离-在线课程

Spring Cloud + Vue前后端分离-第14章 项目优化

14-1 项目初始化

1.增加readme.md,添加项目介绍

2.修改初始化sql

README.md

readme.md是用来写一些项目描述信息,git远程仓库可以自动识别该页面,并显示到仓库首页下方。

md就是markdown,我们写的语法就是markdown语法

这里的远程仓库是慕课网的仓库,其它如github也是一样的显示效果,所有的远程仓库都认readme.md文件。

项目初始化的sql中,只初始系统管理的资源和权限,需要控台登录后,通过resource.json文件来添加完整的资源,再配置权限

# 甲蛙在线视频课程系统## 源码下载
使用下面的命令将源码从远程仓库拉取到本地,需要本地提前安装好git```
git clone https://git.imooc.com/coding-416/course-online.git
或
git clone ssh://git@git.imooc.com:80/coding-416/course-online.git
```## 项目模块说明
* **admin**<br>
控台管理,vue cli项目
* **business**<br>
核心业务模块,spring boot项目
* **doc**<br>
项目相关的文档,包含项目数据库初始化脚本
* **eureka**<br>
注册中心,spring boot项目
* **file**<br>
文件模块,spring boot项目
* **gateway**<br>
路由模块,spring boot项目
* **generator**<br>
代码生成器
* **server**<br>
公共jar模块,被business, file, system依赖
* **system**<br>
系统模块,spring boot项目
* **web**<br>
网站模块,vue cli项目## 项目初始化
* 需要本地安装好idea, nodejs,jdk1.8, mysql8.0, navicat(数据库可视化工具)
* 将下载好的源码,用idea打开
* 刷新maven依赖
* 安装vue cli,参照课程4-1
```
npm install -g @vue/cli
```
* 下载node模块
```
初始化web模块
cd web
npm install初始化admin模块
cd admin
npm install
```
* 新建数据库courseimooc,并courseimooc,密码courseimooc,参照课程3-1
* 数据库初始脚本在/doc/db/all.sql## 项目启动
* 启动注册中心:EurekaApplication
* 启动路由模块:GatewayApplication
* 启动系统模块:SystemApplication
* 启动业务模块:BusinessApplication
* 启动文件模块:FileApplication
* 启动控台管理:admin\package.json
* 启动前端网站:web\package.json## 页面访问
* 控台地址: http://localhost:8080/login<br>
初始用户名密码:test/123
* 控台地址: http://localhost:8081<br>
可以自己注册用户,短信验证码从后台日志看,或看sms表## 资源配置
所有资源都在/doc/db/resource.json<br>
需要在控台上将所有的资源配置进去,并在角色管理中配置权限
权限配置好后,需要重新登录

all.sql

resource.json中添加大章管理,小节管理,内容管理

1.resource.json中添加大章管理,小节管理,内容管理

现象:点击【大章】时,跳到了登录页面。原因:大章显示不显示在侧边栏,但是它也是一个单独的页面,也有路由,所以需要配置资源,同样的还有【小节】页面,【课程内容】页面。

resource.json

页面用了哪些接口,可以到vue代码中查看并整理。以【大章】为例,可以到chapter.vue中查找"/business/admin",就可以整理出来这个页面调用了后端哪些接口。

把最新的资源进行拷贝

配置好用户角色

记住要重新登录一下

测试

大章 

小节 

内容 

14-2 控台欢迎页开发

1.控台欢迎页面开发,增加顶部统计

可以进到profile.html页面,搜索特定的能定位的字符串,比如这里的1,411

welcome.vue

<template><div><div class="space-12"></div><div class="row"><div class="col-xs-12"><div class="center"><span class="btn btn-app btn-sm btn-light no-hover"><span class="line-height-1 bigger-170 blue"> 518 </span><br/><span class="line-height-1 smaller-90"> 课程 </span></span><span class="btn btn-app btn-sm btn-yellow no-hover"><span class="line-height-1 bigger-170"> 6,321 </span><br/><span class="line-height-1 smaller-90"> 大章 </span></span><span class="btn btn-app btn-sm btn-pink no-hover"><span class="line-height-1 bigger-170"> 3,182 </span><br/><span class="line-height-1 smaller-90"> 小节 </span></span><span class="btn btn-app btn-sm btn-grey no-hover"><span class="line-height-1 bigger-170"> 5.23 </span><br/><span class="line-height-1 smaller-90"> 会员(万) </span></span><span class="btn btn-app btn-sm btn-success no-hover"><span class="line-height-1 bigger-170"> 12.76 </span><br/><span class="line-height-1 smaller-90"> 报名(万) </span></span><span class="btn btn-app btn-sm btn-primary no-hover"><span class="line-height-1 bigger-170"> 32.96 </span><br/><span class="line-height-1 smaller-90"> 评论(万) </span></span></div><div class="space-12"></div></div></div></div>
</template>
<script>
export default {name: "welcome",mounted: function () {// sidebar 激活样式方法一// this.$parent.activeSidebar("welcome-sidebar");},methods: {}
}
</script>

测试 

增加新增评论、新增注册会员、课程报名统计显示

1.控台欢迎页面开发,增加新增评论、新增注册会员、课程报名统计显示

welcome.vue

有的可能会出现这个错乱的问题

代码是两块分别占满12格的div,正常情况是上下显示的,但是显示出来有重叠的部分。

布局显示错乱,大概率是多个css样式冲突了,不同的css文件里起了同样的class名字。

class命名不要用简单的单词,最好统一加上前缀,这样不容易和第三方的样式冲突。

在做讲师头像显示的功能时,也是这个"center"样式冲突,导致头像显示重叠。

我们经常可以通过在elements窗口修改html或css,来调试显示效果,之后再把最终的html 或 css 样式复制到项目代码中                                                                               

 只需要把center改为text-center

增加销售量报表统计显示

1.控台欢迎页面开发,增加销售量报表统计显示

图表可以使用jquery插件,这里ace模板用到的jquery.flot插件

粘贴过去,进行修改

<template><div><div class="space-12"></div><div class="row"><div class="col-xs-12"><div class="text-center"><span class="btn btn-app btn-sm btn-light no-hover"><span class="line-height-1 bigger-170 blue"> 518 </span><br/><span class="line-height-1 smaller-90"> 课程 </span></span><span class="btn btn-app btn-sm btn-yellow no-hover"><span class="line-height-1 bigger-170"> 6,321 </span><br/><span class="line-height-1 smaller-90"> 大章 </span></span><span class="btn btn-app btn-sm btn-pink no-hover"><span class="line-height-1 bigger-170"> 3,182 </span><br/><span class="line-height-1 smaller-90"> 小节 </span></span><span class="btn btn-app btn-sm btn-grey no-hover"><span class="line-height-1 bigger-170"> 5.23 </span><br/><span class="line-height-1 smaller-90"> 会员(万) </span></span><span class="btn btn-app btn-sm btn-success no-hover"><span class="line-height-1 bigger-170"> 12.76 </span><br/><span class="line-height-1 smaller-90"> 报名(万) </span></span><span class="btn btn-app btn-sm btn-primary no-hover"><span class="line-height-1 bigger-170"> 32.96 </span><br/><span class="line-height-1 smaller-90"> 评论(万) </span></span></div><div class="space-12"></div><div class="hr hr2 hr-double"></div><div class="space-12"></div></div><div class="col-sm-12 infobox-container"><div class="infobox infobox-green"><div class="infobox-icon"><i class="ace-icon fa fa-comments"></i></div><div class="infobox-data"><span class="infobox-data-number">332</span><div class="infobox-content">新增评论</div></div><div class="stat stat-success">8%</div></div><div class="infobox infobox-blue"><div class="infobox-icon"><i class="ace-icon fa fa-twitter"></i></div><div class="infobox-data"><span class="infobox-data-number">58</span><div class="infobox-content">新注册会员</div></div><div class="badge badge-success">+10%<i class="ace-icon fa fa-arrow-up"></i></div></div><div class="infobox infobox-pink"><div class="infobox-icon"><i class="ace-icon fa fa-shopping-cart"></i></div><div class="infobox-data"><span class="infobox-data-number">108</span><div class="infobox-content">课程报名</div></div><div class="stat stat-important">4%</div></div><div class="space-12"></div><div class="hr hr2 hr-double"></div><div class="space-12"></div></div><div class="col-sm-12"><div class="widget-box transparent"><div class="widget-header widget-header-flat"><h4 class="widget-title lighter"><i class="ace-icon fa fa-signal"></i>销售量</h4></div><div class="widget-body"><div class="widget-main padding-4"><div id="sales-charts"></div></div><!-- /.widget-main --></div><!-- /.widget-body --></div><!-- /.widget-box --><div class="space-12"></div><div class="hr hr2 hr-double"></div><div class="space-12"></div></div><!-- /.col --></div></div>
</template>
<script>
export default {name: "welcome",mounted: function () {let _this = this;// sidebar 激活样式方法一// this.$parent.activeSidebar("welcome-sidebar");_this.drawSaleChart();},methods: {drawSaleChart() {//生成随机两组数据let d1 = [];for (let i = 0; i < 30; i += 1) {d1.push([i + 1, 2000 + Math.floor((Math.random() * 100) + 1)]);}let d2 = [];for (let i = 0; i < 30; i += 1) {d2.push([i + 1, 1900 + Math.floor((Math.random() * 100) + 1)]);}let sales_charts = $('#sales-charts').css({'width': '100%', 'height': '220px'});$.plot("#sales-charts", [{label: "最近30天", data: d1},{label: "上一周期", data: d2},], {hoverable: true,shadowSize: 0,series: {lines: {show: true},points: {show: true}},xaxis: {tickLength: 0},yaxis: {tickLength: 0},grid: {backgroundColor: {colors: ["#fff", "#fff"]},borderWidth: 1,borderColor: '#555'}});}}
}
</script>

测试

增加课程销售排名和分类销售排名统计显示

 1.控台欢迎页面开发,增加课程销售排名和分类销售排名统计显示

<template><div><div class="space-12"></div><div class="row"><div class="col-xs-12"><div class="text-center"><span class="btn btn-app btn-sm btn-light no-hover"><span class="line-height-1 bigger-170 blue"> 518 </span><br/><span class="line-height-1 smaller-90"> 课程 </span></span><span class="btn btn-app btn-sm btn-yellow no-hover"><span class="line-height-1 bigger-170"> 6,321 </span><br/><span class="line-height-1 smaller-90"> 大章 </span></span><span class="btn btn-app btn-sm btn-pink no-hover"><span class="line-height-1 bigger-170"> 3,182 </span><br/><span class="line-height-1 smaller-90"> 小节 </span></span><span class="btn btn-app btn-sm btn-grey no-hover"><span class="line-height-1 bigger-170"> 5.23 </span><br/><span class="line-height-1 smaller-90"> 会员(万) </span></span><span class="btn btn-app btn-sm btn-success no-hover"><span class="line-height-1 bigger-170"> 12.76 </span><br/><span class="line-height-1 smaller-90"> 报名(万) </span></span><span class="btn btn-app btn-sm btn-primary no-hover"><span class="line-height-1 bigger-170"> 32.96 </span><br/><span class="line-height-1 smaller-90"> 评论(万) </span></span></div><div class="space-12"></div><div class="hr hr2 hr-double"></div><div class="space-12"></div></div><div class="col-sm-12 infobox-container"><div class="infobox infobox-green"><div class="infobox-icon"><i class="ace-icon fa fa-comments"></i></div><div class="infobox-data"><span class="infobox-data-number">332</span><div class="infobox-content">新增评论</div></div><div class="stat stat-success">8%</div></div><div class="infobox infobox-blue"><div class="infobox-icon"><i class="ace-icon fa fa-twitter"></i></div><div class="infobox-data"><span class="infobox-data-number">58</span><div class="infobox-content">新注册会员</div></div><div class="badge badge-success">+10%<i class="ace-icon fa fa-arrow-up"></i></div></div><div class="infobox infobox-pink"><div class="infobox-icon"><i class="ace-icon fa fa-shopping-cart"></i></div><div class="infobox-data"><span class="infobox-data-number">108</span><div class="infobox-content">课程报名</div></div><div class="stat stat-important">4%</div></div><div class="space-12"></div><div class="hr hr2 hr-double"></div><div class="space-12"></div></div><div class="col-sm-12"><div class="widget-box transparent"><div class="widget-header widget-header-flat"><h4 class="widget-title lighter"><i class="ace-icon fa fa-signal"></i>销售量</h4></div><div class="widget-body"><div class="widget-main padding-4"><div id="sales-charts"></div></div><!-- /.widget-main --></div><!-- /.widget-body --></div><!-- /.widget-box --><div class="space-12"></div><div class="hr hr2 hr-double"></div><div class="space-12"></div></div><!-- /.col --><div class="col-sm-6"><div class="widget-box transparent"><div class="widget-header widget-header-flat"><h4 class="widget-title lighter"><i class="ace-icon fa fa-star fa-orange"></i>课程销售排名</h4></div><div class="widget-body"><div class="widget-main no-padding"><table class="table table-bordered table-striped"><thead class="thin-border-bottom"><tr><th><i class="ace-icon fa fa-caret-right blue"></i>课程名称</th><th><i class="ace-icon fa fa-caret-right blue"></i>价格</th><th><i class="ace-icon fa fa-caret-right blue"></i>购买数</th></tr></thead><tbody><tr><td>开发工具IDEA从入门到爱不释手</td><td><b class="green">¥299.00</b></td><td><span class="label label-warning arrowed arrowed-right">5,132</span></td></tr><tr><td>开发工具IDEA从入门到爱不释手</td><td><b class="red">¥388.00</b></td><td><span class="label label-warning arrowed arrowed-right">3,132</span></td></tr><tr><td>开发工具IDEA从入门到爱不释手</td><td><b class="green">¥199.00</b></td><td><span class="label label-warning arrowed arrowed-right">2,132</span></td></tr><tr><td>开发工具IDEA从入门到爱不释手</td><td><b class="green">¥299.00</b></td><td><span class="label label-success arrowed arrowed-right">1,654</span></td></tr><tr><td>开发工具IDEA从入门到爱不释手</td><td><b class="green">¥199.00</b></td><td><span class="label label-success arrowed arrowed-right">1,254</span></td></tr></tbody></table></div><!-- /.widget-main --></div><!-- /.widget-body --></div><!-- /.widget-box --></div><!-- /.col --><div class="col-sm-6"><div class="widget-box transparent"><div class="widget-header widget-header-flat"><h4 class="widget-title lighter"><i class="ace-icon fa fa-star fa-orange"></i>分类销售排名</h4></div><div class="widget-body"><div class="widget-main"><div id="piechart-placeholder"></div></div><!-- /.widget-main --></div><!-- /.widget-body --></div><!-- /.widget-box --></div><!-- /.col --></div></div>
</template>
<script>
export default {name: "welcome",mounted: function () {let _this = this;// sidebar 激活样式方法一// this.$parent.activeSidebar("welcome-sidebar");_this.drawSaleChart();_this.drawPieChart();},methods: {drawSaleChart() {//生成随机两组数据let d1 = [];for (let i = 0; i < 30; i += 1) {d1.push([i + 1, 2000 + Math.floor((Math.random() * 100) + 1)]);}let d2 = [];for (let i = 0; i < 30; i += 1) {d2.push([i + 1, 1900 + Math.floor((Math.random() * 100) + 1)]);}let sales_charts = $('#sales-charts').css({'width': '100%', 'height': '220px'});$.plot("#sales-charts", [{label: "最近30天", data: d1},{label: "上一周期", data: d2},], {hoverable: true,shadowSize: 0,series: {lines: {show: true},points: {show: true}},xaxis: {tickLength: 0},yaxis: {tickLength: 0},grid: {backgroundColor: {colors: ["#fff", "#fff"]},borderWidth: 1,borderColor: '#555'}});},drawPieChart(){let placeholder = $('#piechart-placeholder').css({'width':'90%' , 'min-height':'150px'});let data = [{ label: "Java",  data: 38.7, color: "#68BC31"},{ label: "Python",  data: 24.5, color: "#2091CF"},{ label: "Android",  data: 18.6, color: "#DA5430"},{ label: "其它",  data: 10, color: "#FEE074"}]$.plot(placeholder, data, {series: {pie: {show: true,tilt:0.8,highlight: {opacity: 0.25},stroke: {color: '#fff',width: 2},startAngle: 2}},legend: {show: true,position: "ne",labelBoxBorderColor: null,margin:[-30,15]},grid: {hoverable: true,clickable: true}})}}
}
</script>

测试 

14-3 前后端多环境配置

1.springboot 多环境配置

使用application-xxx.properties来设置不同环境的配置,xxx表示环境名称

公共模块要打包,不能带spring-boot-maven-plugin插件

springboot jar 包启动命令:java -jar aaa.jar --spring.profiles.active=xxx,xxx表示环境名称

常见的环境有以下这些:开发、测试、集成、联调、准备生产、灰度、生产

前端

问题:发布生产时,端口号跟本地开发的不一样。需要根据不同的环境配置不同的端口

后端

application-xxx.properties,xxx就是环境的名称,可自定义,可以叫dev,也可以叫development

application-dev.properties

这里的值要和刚才新建的文件application-xxx.properties的xxx一样 

通过在启动命令里增加spring.profiles.active的变量值,达到支持多环境的效果。

本地和生产的数据库配置肯定是不一样的,ip、端口、用户名、密码等都不一样。需要根据不同的环境配置不同的数据库连接。

 需要验证下数据库连的是courseimooc还是courseimooc1

重新启动SystemApplication

我们找一个get请求,比较方便,直接在浏览器中用就可以了

http://localhost:19001/system/admin/resource/load-tree 

解决问题:项目怎么打包

pom.xml(course)

公共模块要打包,不能带spring-boot-maven-plugin插件

pom.xml(business)

pom.xml(file)

 pom.xml(system)

去哪里找我们打包的东西呢

这个jar包怎么用呢

java -jar system-0.0.1-SNAPSHOT.jar  

java -jar system-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev 

 14-4 前后端缓存的使用

1.控台欢迎页面开发,前后端缓存的使用

index.vue

高频查询,低频修改的数据,特别适合使用缓存

控台管理的缓存使用思路:可以使用LocalStorage,最大程度的减少请求,配合主动清除缓存来处理过期数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/437883.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python基础篇: python安装

Python的安装 一、了解python二、官网找到下载链接三、安装3.1、选择自定义安装&#xff0c;并且选择添加系统变量3.2、选择软件安装位置&#xff0c;尽量安装在C盘之外的盘内&#xff0c;并且安装路径不要有中文3.3、等待进度条的完成&#xff0c;该过程会比较慢&#xff0c;请…

【数据分析】numpy基础第二天

文章目录 前言数组的形状变换reshape的基本介绍使用reshapereshape([10, 1])运行结果reshape自动判断形状reshape([-1, 1])运行结果 合并数组使用vstack和hstackvstack和hstack的运行结果使用concatenateconcatenate运行结果 分割数组array_split运行结果 数组的条件筛选条件筛…

Spring结合工厂模式

学习设计模式&#xff0c;不要进入一个误区生搬硬套&#xff0c;它是一种编程思想&#xff0c;结合实际使用&#xff0c;往往设计模式是混合使用的 工厂模式 核心本质&#xff1a;使用工厂统一管理对象的创建&#xff0c;将调用者跟实现类解耦 我这里使用Spring容器的支持&am…

Threejs 展示——fbx 格式模型导入

文章目录 需求分析 需求 导入fbx 格式的模型数据 分析 需要准备 fbx 格式的数据&#xff0c;如下所示 <template><div id"three-canvas" /> </template> <script> // import { Color, MOUSE, PerspectiveCamera, Scene, WebGLRenderer } …

Python算法题集_找到字符串中所有字母异位词

本文为Python算法题集之一的代码示例 题目438&#xff1a;找到字符串中所有字母异位词 说明&#xff1a;给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字…

Unity 外观模式(实例详解)

文章目录 示例1&#xff1a;初始化游戏场景中的多个子系统示例2&#xff1a;管理音频播放示例3&#xff1a;场景加载流程示例4&#xff1a;UI管理器示例5&#xff1a;网络服务通信 在Unity中使用外观模式&#xff08;Facade&#xff09;时&#xff0c;主要目的是为了简化复杂子…

MySQL数据查询语言DQL

MySQL数据查询语言DQL 目录 MySQL数据查询语言DQLDQL关键字数据查询语言DQL1.查询表2.子查询3.联表查询4.GROUP BY5.HAVING6.分页查询7.排序查询 DQL关键字 DQL关键字含义SELECTSELECT 字段列表&#xff0c;查询检索的列或表达式&#xff0c;它指定了最终结果包含的列FROMFROM…

vue —— h函数的学习与使用

文章目录 一、h函数是什么&#xff1f;二、h函数格式说明及使用示例1&#xff1a;简单创建一个VNode&#xff08;vue3&#xff09;示例2&#xff1a;vue2中h函数用法示例3&#xff1a;vue3中h函数的用法vue2和vue3中h函数的区别&#xff1f; 三、h函数实现原理四、h函数常用场景…

《动手学深度学习(PyTorch版)》笔记3.1

Chapter3 Linear Neural Networks 3.1 Linear Regression 3.1.1 Basic Concepts 我们通常使用 n n n来表示数据集中的样本数。对索引为 i i i的样本&#xff0c;其输入表示为 x ( i ) [ x 1 ( i ) , x 2 ( i ) , . . . , x n ( i ) ] ⊤ \mathbf{x}^{(i)} [x_1^{(i)}, x_2…

opencv学习笔记

学习OpenCV3 文章目录 学习OpenCV3openCV模块介绍 图片处理滤波/卷积核高斯滤波 算子索贝尔(sobel)算子沙尔(Scharr)算子拉普拉斯算子Canny边缘检测 **实际使用** 形态学获取形态学卷积核全局二值化自适应阈值二值化腐蚀操作膨胀操作开运算、闭运算形态学梯度顶帽操作黑帽操作 …

Redis 学习笔记 2:Java 客户端

Redis 学习笔记 2&#xff1a;Java 客户端 常见的 Redis Java 客户端有三种&#xff1a; Jedis&#xff0c;优点是API 风格与 Redis 命令命名保持一致&#xff0c;容易上手&#xff0c;缺点是连接实例是线程不安全的&#xff0c;多线程场景需要用线程池来管理连接。Redisson&…

Flink的SQL开发

概叙 Flink有关FlinkSQL的官网: https://nightlies.apache.org/flink/flink-docs-release-1.13/zh/docs/dev/table/sql/overview/ 阿里云有关FlinkSQL的官网: https://help.aliyun.com/zh/flink/developer-reference/overview-5?spma2c4g.11186623.0.0.3f55bbc6H3LVyo Ta…