介绍项目
项目仓库地址 官方gitee,这是他的官网
用于做二次开发的脚手架在合适不过
后端框架采用
springboot3,security6,Mybatisplus2,jdk,各种oss的集合,判断ip地址等监控,用来作为源码学习和二次开发都是很好的教材
代码基本都是mvc的二次封装,便于理解
代码模块
启动类模块只包含启动类,各个模块,业务在进行细分,也有点ddd领域设计的感觉
前端的二次开发
作为java的程序员,看懂后端很简单,对于前端的二次开发需要做一些笔记
---
视图管理
对应views下的路由目录 比如这里的sys/user/index
对应sys/user/index.vue组件
便于二次开发,建议路由采用统一规
可以查看路由源码 其中路由守卫 已经写好
// 加载vue组件
const layoutModules = import.meta.glob('/src/views/**/*.vue')
前后端交互
每个视图中都可以发现存在这么一个导入的函数
封装接口 信息,然后把信息传给生命周期的hook沟子
该生命周期一旦载入进行挂载数据 便开始进行初始化
比如当前菜单 页面是没有分页的
所以组件内部 将所需要的crud参数封装传递给hook.ts 默认是开启分页查询的,所以需要特定参数
这里传递的是ISPpage=false 所以没有page 和limit参数
对应后端
比如user页面需要分页
查看组件内部 参数解析
传递了queryform
合并自定义的参数和默认参数
参数中的primarykey 是当表格操作时定义主键字段
其中删除api,如果手动传递id,就是删除一个,否则需要更改selections 参数,装载id集合
非通用生命周期的api 写在api目录 比如导出日志
配置开发后端地址
导入的元数据配置
嵌入微服务,因为这种管理系统可以用来做微服务这里说几个注意的点
因为最后服务管理会调用各个服务 原生的项目可以发现接口都是sys开头的 那么统一向网关发送请求,并且不过滤第一个断言字段网关
网关配置
为管理端提供统一入口 这里网关对进入服务的请求做了统一跨域处理,所以需要把boot中的跨域过滤器注释
spring:
cloud:
gateway:
# 。。。
globalcors: # 全局的跨域处理
# 解决options请求被拦截问题
add-to-simple-url-handler-mapping: true
corsConfigurations:
'[/**]':
allowedOrigins: # 允许哪些网站指明端口的跨域请求
- "http://localhost:3000"
allowedMethods: # 允许的跨域ajax的请求方式
- "GET"
- "POST"
- "DELETE"
- "PUT"
- "OPTIONS"
allowedHeaders: # 允许的头部信息
- "DNT"
- "User-Agent"
- "X-Requested-With"
- "If-Modified-Since"
- "Cache-Control"
- "Content-Type"
- "Range"
- "Authorization"
exposedHeaders: # 允许暴露给前端的头部信息
- "Content-Length"
- "Content-Range"
maxAge: 360000 # 这次跨域检测的有效期
routes: # 网关路由配置
# 路由id,自定义,只要唯一即可
- id: userMember-service
# uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
# 路由的目标地址 lb就是负载均衡(loadbalance),后面跟服务名称
uri: lb://usermember-application
predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
# 这个是按照路径匹配,只要以/user/开头就符合要求
- Path=/user/**
filters:
- StripPrefix=1
- id: admin-service
# uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
# 路由的目标地址 lb就是负载均衡(loadbalance),后面跟服务名称
uri: lb://admin-boot
predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
# 这个是按照路径匹配,只要以/user/开头就符合要求
- Path=/sys/**
因为这里已经对跨域做处理,所以需要把后端关于关于跨域的配置删除,否则会报错。比如
我的项目中,就根据maku二改将校验身份的过滤器和跨域配置删除,全部放在commom模块,其他模块对他引用即可,这样就可以做到统一配置跨域和鉴权