遇见技术栈——公司自用OA项目讲解

本次分享的是前些日子给东家写的OA项目技术栈


先给大家看一下项目的大致主界面吧
在这里插入图片描述

在这里插入图片描述

首先我得声明一下,展示的这个只是个之前制作的基本dome,也是我前端的一个开源项目,想看看大致效果的可以通过这个链接查看点击这里,这个只是前端展示,是没有后台的。

没办法,跟东家签了字的,可不能随便把东西发出来作死啊。

前端部分技术栈

前端部分技术栈主要采用了vue2.6+element-ui 1.13.1+iview 4,当然也有一些像vue-simple-uploader(大文件分片上传组件)vue-echarts(制表图形组件)等具有特殊功能的组件。

vue的好处就不用多说了吧

  1. 轻量级框架
  2. 简单易学
  3. 双向数据绑定
  4. 组件化
  5. 视图
  6. 数据和结构分离
  7. 虚拟DOM
  8. 运行速度快

除了这些还有丰富的配套组件,现阶段的新项目想必大部分都是vue开发的了。所以这里我就多说下其他组件技术栈的使用吧。

  • 首先说一下这element-ui 1.13.1+iview 4,大家写vue的时候只怕之后引入这其中的一个吧,因为很多功能相似,所以也没有必要全部引入进来,甚至有的人可能会怕两个组件会有冲突。 首先我想说一下,两个组件不存在冲突,引入后组件本身可以正常使用且不受任何影响

  • 其次,我引入这俩个组件的主要目的,是因为这个项目的弹出框问题,在这个类似Windows10的仿桌面前端系统中,每一个路由页面就是一个以iviewmodel的弹出框,使用这个组件的原因是因为该组件允许上下左右进行移动,这是elementuiel-dialog不曾拥有的

  • 另外,因为iviewmodel的弹出框并不支持重叠弹出,而正常的项目中,任何一个项目页面都需要弹出框来支持进行增删改查…的相关操作,所以这时候可以使用elementui中的el-dialog来弥补这个双重弹框的效果。

  • 关于vue-simple-uploader的使用是因为需要一个公司自己的网盘功能,为了方便快速上传和适配更多的机器,所以上传选择了大文件上传,利用这套组件也能达到快速开发的目的。

后端技术栈与数据库选型

后端部分使用的是SpringCloud F版springboot 2.0.3为基础,格外还引入了例如 springmvcmybatismybatis-plusshirologbackjwt等。其中SpringCloud引入了openfeigngateway、Alibaba下的nacosseata、值得注意的是还没有引入ZipKin Sleuth。数据库方面使用的是MySQL5.7,缓存使用的是redis3

这里先说一下使用alibaba套件的原因。其实项目后端原本使用的是Eurekaconfig那些Netflix官方的套件,Alibaba那些套件是后来用于替换上的,因为这个OA项目主要是我们公司自己使用,公司又不大,所以顶得住折腾,我本人在去年就开始捣鼓Alibaba那些套件,像nacossentinelseata这些,也相对的了解了这些组件的优势,其次之前Eureka等组件又断更了。所以就小幅度的替换了一下,得益于SpringCloudCommon的封装,替换过程并没有太大问题。

  • 关于后端设计方面主要是分为了,鉴权服务(authentication servie)、网关服务(gateway service)、配置中心(nacos)、分布式事务(seata)、云盘服务(cloud service)、管理服务(management service)、流程服务(process service)、信息发布服务(release service)、事务管理服务( transaction service)、系统管理(system service)

  • nacos同样支持基于 DNS 和基于 RPC 的服务发现,并且集成了SpringCloudConfig那样的配置中心。我们知道,使用SpringCloudConfig的时候,需要一个服务方,我们的服务需要调用服务方获取配置信息,而Nacos中集成了配置中心的话就会相当于少了一个服务方,服务直接访问注册中心便可以获取配置文件。性能上Nacos获取服务信息的速度和Eureka不相上下,而获取配置文件则比SpringCloudConfig要快上很多,因为SpringCloudConfig的服务方也要单独放到一个服务器上,而这个服务器想必是不会和注册中心的是一个重量级的吧。

  • mybatis-plus的使用除了简化代码以外,最重要的莫过于在别人看你写的代码时,能够更快的知道你调用的这个dao的方法是用来干什么的。而且在修改数据库,新增字段时,也不用费劲去修改mapper的文件了。

  • logback是一款开源日志组件,它的使用算是很平常了,配置文件报错打印,数据库调用打印,openfeign打印,一样都少不了。

  • shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。最近有想法换成SpringSecurity,因为实现Oauth2.0的教程相对较多,更是spring自己家的东西,使用起来贴合度更高,但是鉴权框架这东西不好换啊,又怕引发大问题。

  • seata是 阿里巴巴开源的分布式事务中间件,以高效并且对业务 0 侵入的方式,解决微服务场景下面临的分布式事务问题。引入他就能解决90%的分布式事务问题了,只不过这个组件目前还比较新,使用起来坑是非常的多,所以能别动还是别动比较好。值得一提的是seata0.9的版本之前配置文件非常多,如果有需要使用的话还是建议使用1.0以后的,最好是现在的1.2,基本上已经没有配置文件了,性能上也还可以承受。

  • MySQL5.7我就不多介绍了,我们使用过的是腾讯云的,MySQL的性能堪比Orace、生态又比SqlServer多,没啥好选的,本项目主要分了三个库,一个预上线使用,一个线上环境,一个备份环境。

总结

关于这个项目一时半会是不太好讲完的,所以目前只能先列出来一点给大家分享一下思路,因为是自己公司内部使用的,所以体量也不是很大。但是覆盖的技术栈还是很广的,对技术提升还是有很多的帮助。

第一次写这种讲解类型的文章,实在有点无从下笔,言语不明、语句不通之处还请见谅,希望大家能认真读下来,或多或少的学到一点知识。

如果觉得有帮助的话给个免费的点赞吧,Thanks♪(・ω・)ノ

猜你喜欢

转载自blog.csdn.net/jxysgzs/article/details/108256601