引言
我还在上大学的时候,就听说过 JeecgBoot 的大名,但那时还没有对 JeecgBoot 进行深入的了解,我习惯使用 Ruoyi 作为我最常用的 Web 开发脚手架。一年前我作为一名Web全栈开发加入到新公司,公司的项目使用 JeecgBoot 开发,第一次体会到了如此高效畅快的开发体验,Online 表单和各种字典组件的设计,无疑是大大的提高了我的开发效率。我的毕业设计记忆卡片软件的后台也是使用 JeecgBoot 快速构建的。
开发中遇到的一些问题和小建议
支持一下 LocalDateTime
这里 MyBatis 的自动注入创建时间和更新时间,传参固定使用了 Date(),Online 表单生成也都是 Date 类型,很多使用 LocalDateTime 的API要更好用一些,在开发过程中还需要做额外的转换,就太方便了。
前端组件字典缓存问题
比如前端的 JSearchSelect、JDictSelectTag 组件,当设置的sql字典数据更新时,前端的组件并不能自动的刷新字典,我的解决方法如下:
下拉框(JSearchSelect、JDictSelectTag)
解析 JSearchSelect 的源码,初始化字典的时机是父组件传入的 props.dict 的字典配置内容发生改变
javascript
watchEffect(() => {
props.dict && initDictData();
});
两种方案:
- 将
dict配置设置为动态数据并更新
vue
<j-search-select :dict='jSearchSelectDictOption' />
<script setup>
const jSearchSelectDictOption = ref("table_name,table_text,id");
function initSelectDictOption() {
jSearchSelecDictOption.value = "";
jSearchSelecDictOption.value = "table_name,table_text,id";
}
</script>
- 开放
initDictData方法,先将方法return出来
vue
<j-search-select ref="jSearchSelectRef" />
<script setup>
const jSearchSelectRef = ref();
jSearchSelectRef.value.initDictOption();
</script>
JVxeTable
JVxeTable 也是监听字典配置进行的初始化,它监听的是表的 columns 数据。例如:
js
const table = reactive<Record<string, any>>({
loading: false,
columns: tableColumns, // 就是这个数据
dataSource: [],
});
tableColumns.map((item) => {
delete item.options
});
table.columns = deepClone(tableColumns);
git hook 问题
前端之前使用的是 husky 来构建 git hook,但之前为了统一docker部署,就合并到了相同的 git 存储库,这就导致 husky 在里面不可用了。建议恢复两个仓库,并保留 JeecgBoot 仓库,通过 git submodule 关联前后端两个子仓库。
其它
在开发过程中也偶尔会看到源码中的小 bug,并提出了 issues,官方都会很快的修复问题,并告诉我解决方案。
功能上的建议
- Online 表单是否可以添加一些配置,比如是否开启逻辑删除,是否开启乐观锁。
- 生成代码携带字表的 Page 类,直接继承主表的 entity,避免额外的维护。
- 开发中经常会遇到根据不同流程状态禁用某些字段编辑权限的需求,可以将所有字段的 disabled 设置为
disabled || isDisabledFiled('fieldName'),然后在里面设计流程和字段的逻辑,不知道这个是不是可以作为JeecgBoot默认的代码生成规则。
推荐一些我觉得大部分人都会喜欢的通用功能,我在公司的项目中开发了这些功能,使用率很高:
- Jeecg工作台的快捷导航,现在需要手动填写,可以做成动态的,在左侧菜单栏那里加个星星图标用于加入快捷导航。
- 给 BasicModal 和 JModal 组件,添加一个props,标记这个props的Modal展开的大小自动为只保留左侧菜单栏的大小
大概效果:
展望
在这一年的使用过程中,也发现了 JeecgBoot 的一些问题,但很快就都被开发团队解决掉了。最有意思的是,每当老板给我提出一些特殊需求时,总是能在第二天收到 Jeecg 官方带来的好消息!
| 老板 | 我 | JeecgBoot |
|---|---|---|
| 做个BI大屏 | 好的,我先找找工具 | 积木报表开源,支持BI大屏 |
| 这个模块我想独立成一个系统,做个单点登录 | 好的,我研究一下 | JeecgBoot 单点登录开源 |
| JeecgBoot出了个AI助手,集成一下,做一下知识库 | 目前好像只支持 ChatGPT,如果接入 Ollama 需要做些开发。 | 最新支持,通过Ollama本地接入DeepSeek大模型 |
每次听到消息的那一刻,我直呼 woc。先后又免费了敲敲云无代码平台,近期我看到 JeecgBoot 的开发文档焕然一新,心里又是一喜,之前开发过程中总是会发现一些文档内容缺陷,还需要到旧版的文档寻找答案,但依然可能无果。
总之,我在 JeecgBoot 身上学习到很多,也看到了 JeecgBoot 的飞速成长,即便在 AI 盛起的热潮下,JeecgBoot 也紧跟时代,我相信 JeecgBoot 会越来越好。