当前位置:首页 > 每日看点 > 正文内容

若依框架真的好用吗有用过若依框架的吗说说感受?

卡卷网1年前 (2024-12-28)每日看点244

若依是一个能用的东西。

仅此而已,远远谈不上好用。

挑几个我实在无法忍受的点来说。

1、ruoyi-vue版的菜单name重名404bug

这个bug是什么意思呢?

如果你有两个二级菜单,aaa--index,bbb --index,不好意思,其中一个会404,因为index重名冲突了。

没看懂?那我拿json结构举个例子。

[{ name: 'Aaa', path: '/aaa', children: [ { name: 'Index', path: '/index' } ]}, { name: 'Bbb', path: '/bbb', children: [ { name: 'Index', path: '/index' } // 这个会404,因为name必须唯一,存在2个Index ]} ]

若依的菜单管理,配置的时候需要你填写的就是一个path,然后它直接取了path加首字母大写作为name。

但在vue-router的组件要求是name必须唯一。

我很好奇,若依在生成路由name的时候,为什么子菜单不能拼接上父级的name?

即变成

[{ name: 'Aaa', path: '/aaa', children: [ { name: 'AaaIndex', path: '/index' } ]}, { name: 'Bbb', path: '/bbb', children: [ { name: 'BbbIndex', path: '/index' } //即子name包含父name,避免name冲突 ]} ]

这个bug这么简单,但是就是没改。issue上不少人都有人提,然后一堆人的回复就是,name不能重复,换一个不重复的path。

2、代码生成器默认模板

我相信学Java的人都听过一堆的的VO、PO、DTO等各种O。
但实际使用上,非常多人喜欢Entity一用到底。
事实上我也觉得简单的项目弄那么多O概念出来就是给自己找麻烦。
但是,我依然觉得,一个CRUD至少要用到2个O。但是请你看下去,大概率不是你平时看到的2个O。

先举个例子吧。
假设有个表,就叫demo吧,对应的类是

public class Demo { private Long id; private String searchField1; // 需要作为搜索条件的字段 private String searchField2; private String searchField3; private LocalDate searchDate1; // 需要做为搜索条件的时间字段 private LocalDate searchDate2; private LocalDate searchDate3; private String field1; // 不需要搜索的字段 private String field2; private String field3; }

常见的错误用法一

生成一个Demo(Entity)外,还另外生成一个DemoVO(也可能叫其他名字)。
但两者字段几乎就是一模一样。
所以实际用的时候也就是各种Bean.copyProperties(source, target) copy来copy去的。
这也是大家往往觉得这些各种各样的O是垃圾的主要原因。

常见的错误用法二

若依里就是这样。
默认生成的controller里CRUD都是用一个Entity从头用到尾。

public class DemoController { public TableDataInfo list(Demo demo); // 其他方法没错,就错在list方法的请求参数不该用User public AjaxResult getById(Long id); public AjaxResult add(Demo demo); public AjaxResult update(Demo demo); public AjaxResult delete(Long id); }

其他方法都没错,增删改都是围绕着Entity来做的,直接用Entity多省事。
但是,list是例外。list的返回可以返回Entity,但是查询参数绝对应该独立一个QueryParam对象。

回头看我前面列出的Demo对象,为什么我要刻意强调 searchField、normalField 呀?
因为一个表那么多字段,不是所有字段都需要作为搜索条件的。

若依框架真的好用吗有用过若依框架的吗说说感受?  第1张

若依自己也是知道的,所以代码生成器可以让你选择哪些要作为查询条件。
再来看时间相关的查询条件,这是用between最多的。
Entity上时间是一个字段,但是查询的时候很多时候传的是一个date range。
这就不对应了呀。怎么办呢?
若依的做法就是用Map params,每个Entity内都嵌入了一个Map params。

其实我觉得,在这里引入一个QueryParam是最好的。
勾选了哪些字段需要用来做查询条件,就专门把这些字段生成一个QueryParam。
这就是我开头说的2个O,Entity和QueryParam。

我的观点

1、生成2个字段一模一样的Entity和VO,copy来copy去,是很蠢的。
2、list用Entity来做查询条件,也是很蠢的。

我的建议

1、如果你的entity和各种O大差不差,就别折腾了,一个Entity就够,别要各种O了
2、专门生成一个QueryParam给list做查询参数用。

我推荐的Controller

public class DemoController{ public TableDataInfo<Demo> list(DemoQueryParam queryParam); // 参数用queryParam,返回用Entity public R<Demo> getById(Long id); public R<Void> add(Demo demo); public R<Void> update(Demo demo); public R<Void> delete(Long id); // 不在意返回结果的话,可以用Void,return R.ok(null)即可 }

3、超喜欢用Map

前面的代码也给出若依的默认代码了,超喜欢在各种地方用Map。

比如Controller里接口的数据接收用Map(我指的是BaseEntity里有一个Map params),返回用AjaxResult?

我实在搞不懂,为什么是用AjaxResult,这样swagger文档还有什么意义?

根本出不来返回报文的结构呀。

4、项目应该SDK化

市面上大多数若依这样的项目,大家的使用方式就是把若依的项目clone下来,然后自己开多一个module,甚至直接在ruoyi-admin模块里继续加自己的业务代码。

这样的做法,坏处非常明显。

1、很难(甚至无法)继续同步若依的更新。

2、在自己的业务项目代码仓库里掺杂着大多自己本不需要关注的框架源代码

3、我相信很多人在公司里都不只负责一个项目,这样就把若依相同的源代码拷贝了好几次

试想一下,你使用springboot的时候,不是引入dependencies,而是直接把springboot的源代码放到项目里,这画面美不美?

所以我很好奇,若依(不仅仅是若依,应该说国内这一类项目都是如此)为什么不把项目sdk化,这样大家都可以建一个几乎空白的项目,然后引入若依的dependencies,就可以只关注自己的业务代码了。

我们现在就是这样,把若依的源代码打包jar后deploy到私有的nexus。

想魔改就魔改,以后要同步更新若依也很方便。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2024/12/5829.html

分享给朋友:

相关文章

提升自己最快的方式是什么?

提升自己最快的方式是什么?

1.稻盛和夫说过:“改变自己最快的方法就是做自己害怕的事,不敢做的事,认为自己做不到,觉得不可能的事。如果在自己的舒适区待久了,就会丧失斗志,如果想快速的改变,可以坚持去做一些对自己有益的事。2.早睡早起,坚持运动保持旺盛的精力,人生拼到最...

自己拥有一台服务器可以做哪些很酷的事情?

自己拥有一台服务器可以做哪些很酷的事情?

我就有一台,跑了两年了,ipv6 ddns 网络,加虚拟化平台.跑了个 winserver 和 ubuntu 服务器。稳的雅皮!拆掉后盖,散热更好。烟盒固定硬盘。键盘防止灰尘掉落。电池拆掉,屏幕拆掉,也是散热考虑。屏幕拿去做便携副屏了。换...

曾经很火的迅雷,为什么现在不怎么火了?

曾经很火的迅雷,为什么现在不怎么火了?

3年前,迅雷推出了一项服务,只要2899元就可以享受迅雷终身会员。这个终身会员和付费会员没有区别,付费会员的离线加速、云空间等服务,终身会员都具备。除此之外,终身会员可以在使用1年后就可以全额退款,使用2年后也可以全额退款,使用5年后也是如...

为什么 IPv6 突然不火了?

为什么 IPv6 突然不火了?

我国从政策层面推广IPv6,其本意是从国家竞争的层面打破美国对IPv4地址的垄断,但实际上却受阻于国内ISP和云服务商这类“IPv4地主”,实际分配到用户的,是功能打了折扣的“瘸腿IPv6”,IPv6直接寻址、点对点连接的优势很多时候都难以...

为什么说,运维是IT行业里技术含量最低的?

我是有幸从学校出来后转行进入IT运维这个行业的,有在上海这个行业幸跌爬滚打5年,目前2024年失业中......(老实说,这几年接触的人和事、有些厌烦这个行业了) 以一个过来人的角度讲讲这个岗位的心酸和无奈,也说说为什么...

高德地图靠什么赚钱?

高德地图靠什么赚钱?

10年前,马云不惜花了88亿把高德地图收入囊中,其实他根本就不想买,因为觉得自己根本用不到,考虑到互联网电商离不开地图导航,犹豫再三还是买下了!业内的很多人觉得他就是一个接盘侠,等着看他笑话。如今,高德日活跃用户数远超1亿,成为大家出行必备...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。