一个基于vue3-element-admin开源项目重写Vue3 + TS + ElementPlus,采用插件化 + 扩展包形式 结构解耦 易于扩展的后台管理系统
本框架与RuoYi的功能差异
功能 |
本框架 |
RuoYi |
前端项目 |
基于vue3-element-admin开源项目重写Vue3 + TS + ElementPlus |
基于Vue2/Vue3 + JS |
后端项目结构 |
采用插件化 + 扩展包形式 结构解耦 易于扩展 |
模块相互注入耦合严重难以扩展 |
后端代码风格 |
严格遵守Alibaba规范与项目统一配置的代码格式化 |
代码书写与常规结构不同阅读障碍大 |
Web容器 |
采用 Undertow 基于 XNIO 的高性能容器 |
采用 Tomcat |
权限认证 |
采用 Sa-Token、Jwt 静态使用功能齐全 低耦合 高扩展 |
Spring Security 配置繁琐扩展性极差 |
权限注解 |
采用 Sa-Token 支持注解 登录校验、角色校验、权限校验、二级认证校验、HttpBasic校验、忽略校验角色与权限校验支持多种条件 如 AND OR 或 权限 OR 角色 等复杂表达式 |
只支持是否存在匹配 |
关系数据库支持 |
原生支持 MySQL、Oracle、PostgreSQL、SQLServer可同时使用异构切换 |
支持 Mysql、Oracle 不支持同时使用、不支持异构切换 |
缓存数据库 |
支持 Redis 5-7 支持大部分新功能特性 如 分布式限流、分布式队列 |
Redis 简单 get set 支持 |
Redis客户端 |
采用 Redisson Redis官方推荐 基于Netty的客户端工具支持Redis 90%以上的命令 底层优化规避很多不正确的用法 例如: keys被转换为scan支持单机、哨兵、单主集群、多主集群等模式 |
Lettuce + RedisTemplate 支持模式少 工具使用繁琐连接池采用 common-pool Bug多经常性出问题 |
缓存注解 |
采用 Spring-Cache 注解 对其扩展了实现支持了更多功能例如 过期时间 最大空闲时间 组最大长度等 只需一个注解即可完成数据自动缓存 |
需手动编写Redis代码逻辑 |
ORM框架 |
采用 Mybatis-Plus 基于对象几乎不用写SQL全java操作 功能强大插件众多例如多租户插件 分页插件 乐观锁插件等等 |
采用 Mybatis 基于XML需要手写SQL |
SQL监控 |
采用 p6spy 可输出完整SQL与执行时间监控 |
log输出 需手动拼接sql与参数无法快速查看调试问题 |
数据分页 |
采用 Mybatis-Plus 分页插件框架对其进行了扩展 对象化分页对象 支持多种方式传参 支持前端多排序 复杂排序 |
采用 PageHelper 仅支持单查询分页 参数只能从param传 只能单排序 功能扩展性差 体验不好 |
数据权限 |
采用 Mybatis-Plus 插件 自行分析拼接SQL 无感式过滤只需为Mapper设置好注解条件 支持多种自定义 不限于部门角色 |
采用 注解+aop 实现 基于部门角色 生成的sql兼容性差 不支持其他业务扩展生成sql后需手动拼接到具体业务sql上 对于多个M |