OneCode-RAD 是一个基于 Spring Boot 的开源低代码可视化开发平台,其核心功能是提供可视化设计器,允许开发者通过拖拽方式快速构建 Web 应用界面。本指南旨在帮助开发者了解如何对 RAD 设计器进行二次开发,包括组件扩展、功能增强和界面定制。
RAD 设计器采用前后端分离的架构设计:
src/main/resources/static/RAD/
目录下的 JavaScript 模块位于 com.ds.rad.service.RADEditor,主要提供以下功能:
位于 com.ds.rad.service.ProjectManager,主要提供以下功能:
位于 com.ds.rad.service.ComponentPluginService,主要提供以下功能:
位于 com.ds.rad.bean.XUIFile,用于表示设计器中的文件节点,支持多种类型:
@Controller
@RequestMapping(value = {"/admin/custom/"})
@MethodChinaName(cname = "自定义服务")
public class CustomService {
@MethodChinaName(cname = "自定义方法")
@RequestMapping(value = {"customMethod"}, method = {RequestMethod.GET, RequestMethod.POST})
public @ResponseBody
ResultModel<Boolean> customMethod(String param) {
ResultModel<Boolean> result = new ResultModel<Boolean>();
// 实现业务逻辑
return result;
}
}
public class XUIFile {
// 添加新的属性和方法
private String customProperty;
public String getCustomProperty() {
return customProperty;
}
public void setCustomProperty(String customProperty) {
this.customProperty = customProperty;
}
}
前端设计器基于 XUI 框架构建,主要目录结构如下:
RAD/
├── conf.js # 配置文件
├── conf_widgets.js # 组件配置
└── 其他功能模块...
设计器主模块,负责:
组件配置文件,定义所有可用组件的属性和行为。
在 conf_widgets.js中添加新组件配置:
{
id: 'custom.component',
caption: '自定义组件',
imageClass: 'fa fa-custom',
draggable: true,
iniProp: {
// 初始属性
}
}
创建新的 JavaScript 文件,如 CustomComponent.js
:
xui.Class('RAD.CustomComponent', 'xui.Module', {
Instance: {
iniComponents: function () {
// 初始化组件
},
events: {
// 事件处理
}
}
});
在 conf.js相关配置文件中注册组件:
xui.merge(window.CONF, {
customComponents: {
'custom.component': 'RAD.CustomComponent'
}
});
在 conf.js中添加主题配置:
xui.merge(window.CONF, {
customTheme: {
backgroundColor: '#f0f0f0',
textColor: '#333333'
}
});
ExtCom
的工程在 ComponentPluginService 中添加新的服务方法:
@MethodChinaName(cname = "获取自定义组件")
@RequestMapping(value = {"getCustomComponents"}, method = {RequestMethod.GET, RequestMethod.POST})
public @ResponseBody
ListResultModel<List<EUModule>> getCustomComponents(String projectName) {
ListResultModel<List<EUModule>> result = new ListResultModel<List<EUModule>>();
// 实现获取自定义组件逻辑
return result;
}
在相应的服务类中添加新的 @RequestMapping
方法:
@MethodChinaName(cname = "新功能接口")
@RequestMapping(value = {"newFeature"}, method = {RequestMethod.GET, RequestMethod.POST})
public @ResponseBody
ResultModel<CustomData> newFeature(String param) {
ResultModel<CustomData> result = new ResultModel<CustomData>();
// 实现业务逻辑
return result;
}
在前端 JavaScript 中调用新添加的 API:
xui.APICaller.create({
url: '/admin/custom/newFeature',
method: 'POST',
data: {param: 'value'},
callback: function(response) {
// 处理响应
}
}).invoke();
在 XUIProject 类中添加新的配置属性:
public class XUIProject {
private String customConfig;
public String getCustomConfig() {
return customConfig;
}
public void setCustomConfig(String customConfig) {
this.customConfig = customConfig;
}
}
在 conf.js
中添加自定义配置:
xui.merge(window.CONF, {
customSettings: {
enableCustomFeature: true,
customTimeout: 5000
}
});
使用 Spring Boot 的调试功能:
mvn spring-boot:run -DjvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
使用浏览器开发者工具进行调试:
mvn clean package
java -jar target/Studio.jar
检查组件是否正确注册到 conf_widgets.js
中。
检查后端服务是否正常启动,API 路径是否正确。
使用浏览器性能分析工具定位性能瓶颈。
本文档详细介绍了 OneCode-RAD 设计器的二次开发方法,包括后端服务扩展、前端组件开发、插件机制和 API 扩展等方面。通过遵循本指南,开发者可以快速定制和扩展 RAD 设计器的功能,满足特定业务需求。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。