尚医通项⽬学习笔记Part1
尚医通项⽬学习笔记
前⾔
最近在跟着B站上⾯尚硅⾕的视屏学习尚医通的项⽬,想要通过实战项⽬巩固之前学习的知识。在项⽬联系的过程中,虽然⼀步步跟着⽼师的操作来,但还是能遇到各种千奇百怪的bug,每天bug的时间要花到学习时间的⼀半。为了避免这些⾟苦bug的时间被浪费,也为了巩固⾃⼰所学的项⽬知识。所以决定通过CSDN,⽇常的记录⼀些项⽬学习过程中的所学所想。
希望有共同想法的同学可以⼀起学习,⼀起进步!
⼀、⽬前学习进度
断断续续看这个项⽬也快⼀个星期了,⽬前是完成了前后端的hosp和cmn两个模块,可以使⽤nginx访问两个服务。
⼆、学习记录
1.项⽬简介
1.1 项⽬所会⽤到的技术栈
SpringBoot:简化新Spring应⽤的初始搭建以及开发过程
SpringCloud:基于Spring Boot实现的云原⽣应⽤开发⼯具,SpringCloud使⽤的技术:(SpringCloudGateway、Spring Cloud Alibaba Nacos、Spring Cloud Alibaba Sentinel、SpringCloud Task和SpringCloudFeign等)
MyBatis-Plus:持久层框架
Redis:内存缓存
RabbitMQ:消息中间件
HTTPClient: Http协议客户端
Swagger2:Api接⼝⽂档⼯具
Nginx:负载均衡
Lombok
Mysql:关系型数据库
MongoDB:⾯向⽂档的NoSQL数据库
Vue.js:web 界⾯的渐进式框架
Node.js: JavaScript 运⾏环境
Axios:Axios 是⼀个基于 promise 的 HTTP 库
NPM:包管理器
Babel:转码器
Webpack:打包⼯具
Docker :容器技术
Git:代码管理⼯具
1.2 业务流程
2.项⽬学习笔记
2.1MyBatis-Plus相关
第⼀天主要是学习了MyBatis-Plus相关的基本操作,如何运⽤MyBatis-Plus来帮助我们后端开发更加简洁。我是第⼀次接触MyBatis-Plus,觉得很神奇,可以不⽤写具体的SQL语句,简化了我们之前的不少操作,对开发⼈员很友好。这⼀部分因为都是基本的操作,所以基本没遇到什么问题。
2.2搭建项⽬框架
第⼆天主要是搭建了项⽬的整体框架。之前写代码都是在IDEA的⼀个project⾥进⾏的。通过这部分的学习,也让我知道了⼀个完整项⽬的后端应该有多个module组成。每个module有⾃⼰的功能。
整个项⽬的框架如上。
common模块是⽤来放⼀些公共的⼯具,如处理异常的⼯具、编码⼯具和后⾯要⽤到的测试Swagger类。
common模块⽤来存放⼀些具体的类,如⽤户和医院类。
service模块⾥⾯实现业务功能,最基本的增删改查都在这个模块实现。
此外还了解了基本的Git如何使⽤,如何将代码上传到国产Github码云上。
2.3前端搭建
这⼀天主要了解了项⽬前端要⽤到的相关知识。
知道了ECMAScript 6是JavaScript的下⼀代标准,了解了Vue的最基本的使⽤语法。
认识了前端的Maven——npm这个神器,通过它下载依赖,让我们的项⽬管理轻松了许多。需要注意的是,npm使⽤的时候和Maven⼀样需要⼿动修改镜像,不然下载的速度会特别的慢。
npm config set registry registry.
之后还学习了babel转码⼯具和webpack打包⼯具。
接着着重了解了vue-element-admin后台管理系统⽅案,这是基于饿了么团队的element-ui开发的。使⽤这套⽅案前端基本的框架和样式已经帮我们搭好了,这样可以为我们项⽬的前端开发节省⼤量的时间,当前端有额外的需求时,只需要去element-ui的⽹站下载相关的内容加⼊到我们的前端系统中即可。简直是项⽬开发过程中的⼀⼤神器。
2.3.1前端开发流程
项⽬的前端遵循以上的开发流程。
2.3.2前端开发
确定开发流程后,我们按照后端实现功能来相应完成前端的开发过程。在前端页⾯中添加相应的组件,绑定相应的⽅法,实现前后端的功能。
当我们完成基本的项⽬功能,运⾏前后端开始测试的时候,却发现前端调⽤后端数据的时候请求失败了。
这是因为前后端调⽤数据的时候产⽣了跨域的问题。跨域就是请求双⽅协议、域名和端⼝号有⼀处不同时,会产⽣的问题。解决跨域的问题有很多,最简单的⽅法是在要调⽤到的控制类中加⼊SpringBoot中的注解@CrossOrigin,允许开启跨域操作。如下:
就当我以为这样就可以解决问题的时候,再次运⾏程序之后却还是报了同样的错误。难道是版本的问题导致注解不⽣效了?难道要设置⼀些其他的东西?我在⽹上看了很多帖⼦,甚⾄B站上⾯也搜了不少相关视屏,可惜⽆⼀解决我的问题,就在我焦头烂额之际,我突然发现,浏览器下端的显⽰跨域的⽅法名和我在前端/src/api/xx.js⾥的⽅法名不⼀样!赶忙修改后,再次运⾏,果然成功了。⼀个拼写的粗⼼,让我付出了三个多⼩时查错的代价,以后写代码的时候⼀定要注意这些细节!
同时也让我知道了,浏览器那⼀端报跨域的错误,不⼀定是你没有设置跨域,也有可能是你拼写错误导致根本不存在这个⽅法!
3.service/cmn开发
springcloud难学吗
完成了service/hosp的开发过后,接下来进⾏service/cmn的开发。这个模块⾥⾯主要是⼀些数据字典的操作。⾸先通过阿⾥巴巴的EasyExcel完成了数据字典的导⼊和导出,给数据字典添加缓存因为我没
有学过Redis所以这部分的内容就先跳过了,接着通过使⽤Nginx 作为反向代理服务器来实现访问两个不同端⼝的业务。
可是我的Nginx在配置完成后⼀直似乎没有起到作⽤,浏览器⼀直给我报跨域的错误。吸取上次的拼写错误后,这次我更改了对应端⼝后单独测试,发现单独测试的时候可以运⾏,那就应该不是跨域的问题。应该是Nginx没有起作⽤,但是在确认了f没有修改错误,重启了多次Nginx后还是⽆法解决问题。⼜在⽹上了各种⽅法还是没办法解决这个问题。晚上吃完晚饭后,在⽹上看到说要检查Nginx默认的端⼝号有没有被占⽤,打开任务管理器详细信息那⼀栏⾃习⼀看,不对呀,怎么有这么多进程。
原来是我第⼀次配置Nginx的时候有点⼩问题,然后⼀直没有成功关闭Nginx,在之后的多次测试中⼜启动了⽆数的Nginx,最后关闭了所有的Nginx,在确认⾃⼰的配置没有错的情况下,启动Nginx和服务
器,终于没有报错。解决了困扰了⼀个下午的问题。
Part1⼩结
学习是⼀个急不得的过程,在学习新东西的过程中肯定会遇到各种问题,我们遇到问题不要着急,要享受解决问题的过程,在问题中巩固⾃⼰的所学从⽽牢牢掌握相应知识,做到下次不再犯。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。