开源无代码 / 低代码平台 NocoBase 发布 V0.15,全新的插件设置中心


NocoBase 是什么

NocoBase 是一个极易扩展的开源无代码开发平台。 不必投入几年时间、数百万资金研发,花几分钟时间部署 NocoBase,马上拥有一个私有、可控、极易扩展的无代码开发平台。

与众不同之处

1. 模型驱动,“数据结构”与“使用界面”分离

多数以表单、表格或者流程驱动的无代码产品都是在使用界面上直接创建数据结构,比如 Airtable 在表格里新增一列就是新增一个字段。这样的好处是使用简单,不足是功能和灵活性受限,难以满足较复杂场景的需求。

NocoBase 采用数据结构与使用界面分离的设计思路,可以为数据表创建任意数量、任意形态的区块(数据视图),每个区块里可以定义不同的样式、文案、操作。这样既兼顾了无代码的简单操作,又具备了原生开发的灵活性。

model

2. 所见即所得

NocoBase 可以开发复杂和有特色的业务系统,但这并不意味着需要复杂和专业的操作。只需一次点击,就可以在使用界面上显示出配置选项,具备系统配置权限的管理员可以用所见即所得的操作方式,直接配置用户的使用界面。

wysiwyg

3. 功能即插件

NocoBase 采用插件化架构,所有新功能都可以通过开发和安装插件来实现,扩展功能就像在手机上安装 APP 一样简单。

plugins

新特性

Plugin settings manager

不兼容的变化

插件配置页面注册方式

以前使用 SettingsCenterProvider 注册插件配置页面,现在需要通过插件化注册。

  • 案例 1:原页面仅有一个 Tab 的情况

当页面仅有一个 Tab 时,新版本的 Tab 会删掉,仅保留页面的标题和图标。

const HelloProvider = React.memo(props => {
return (
<SettingsCenterProvider
settings={{
hello: {
title: "Hello",
icon: "ApiOutlined",
tabs: {
tab1: {
title: "Hello tab",
component: HelloPluginSettingPage,
},
},
},
}}
>
{props.children}
SettingsCenterProvider>
);
});

现在需要改为:

class HelloPlugin extends Plugin {
async load() {
this.app.pluginSettingsManager.add("hello", {
title: "Hello", // 原 title
icon: "ApiOutlined", // 原 icon
Component: HelloPluginSettingPage, // 原 tab component
aclSnippet: "pm.hello.tab1", // 权限片段,保证权限的 code 和之前的一致,如果是新插件,不需要传这个参数
});
}
}

也就是删除了 tab1 Hello Tab

其中参数 aclSnippet pm.hello.tab1 对应原来的 settings 对象的 key:

<SettingsCenterProvider
settings={{
hello: {
// 这里的 hello 对应 `pm.hello.tab1` 中的 `hello`
tabs: {
tab1: {
// 这里的 tab1 对应 `pm.hello.tab1` 中的 tab1
},
},
},
}}
>SettingsCenterProvider>
  • 案例 2:原页面有多个 Tab 的情况
const HelloProvider = React.memo(props => {
return (
<SettingsCenterProvider
settings={{
hello: {
title: "Hello",
icon: "ApiOutlined",
tabs: {
tab1: {
title: "Hello tab1",
component: HelloPluginSettingPage1,
},
tab2: {
title: "Hello tab2",
component: HelloPluginSettingPage2,
},
},
},
}}
>
{props.children}
SettingsCenterProvider>
);
});

现在需要改为:

import { Outlet } from "react-router-dom";

class HelloPlugin extends Plugin {
async load() {
this.app.pluginSettingsManager.add("hello", {
title: "Hello", // 原 title
icon: "ApiOutlined", // 原 icon
Component: Outlet,
});

this.app.pluginSettingsManager.add("hello.tab1", {
title: "Hello tab1", // 原 tab1 title
Component: HelloPluginSettingPage1, // 原 tab1 component
});

this.app.pluginSettingsManager.add("hello.tab2", {
title: "Hello tab2", // 原 tab2 title
Component: HelloPluginSettingPage1, // 原 tab2 component
});
}
}

获取 pluginSettingsManager 对应的路由信息

const baseName = app.pluginSettingsManager.getRouteName("hello");
// admin.settings.hello
const basePath = app.pluginSettingsManager.getRoutePath("hello");
// /admin/settings/hello

如果插件配置页面内部有链接跳转的话,需要进行相应的更改,例如:

navigate("/admin/settings/hello/1");
navigate("/admin/settings/hello/2");

// 可以更改为
const basePath = app.pluginSettingsManager.getRoutePath("hello");
navigate(`${basePath}/1`);
navigate(`${basePath}/2`);

更多信息,请参考 插件配置页面。

更新记录

完整的更新记录,请参考 更新记录。

v0.15.0-alpha.2 - 2023-11-13

Merged

  • fix: antd table ref bug #3029
  • fix: improve plugin settings code #3028
  • fix: plugin settings manager Component optional & delete isBookmark #3027
  • fix(plugin-workflow): fix workflow title in binding workflow configuration not showing #3026

Commits

  • chore(versions): 😊 publish v0.15.0-alpha.2 b597aec
  • chore: update changelog 9dae34a

v0.15.0-alpha.1 - 2023-11-13

Merged

  • refactor: plugin settings manager #2712
  • fix: fix regular of variable #3024
  • fix: should load association data in subform #3020
  • fix: association field in reference block failed to append #2998
  • fix: relational data should be loaded correctly on first render #3016
  • feat: plugin-mock-collections #2988
  • Update pull_request_template.md #3013
  • fix: should lazy load association data in subform #3012
  • fix(import): remove commas from numbers #3011
  • fix(static-server): directoryListing: false #3010
  • fix(theme): text color of page header right side #3008
  • fix: menu failed to design while menu title is empty string #2999
  • fix(plugin-workflow): add missed component #3007
  • fix: detail block has no data #3003
  • refactor(plugin-workflow): allow to use function for values when creating node #3002
  • fix(plugin-workflow): fix configuration drawer close logic #3001
  • chore: add aria label for workflow table #2995
  • fix: select item can not be selected in connecting data blocks #2993
  • chore: optimize error message #2992
  • refactor(plugin-workflow): change to function #2991
  • fix(plugin-workflow): fix loop scope variable #2989
  • chore: optimize error message #2985
  • fix(formula-field): formula field failed to real-time evaluating and support sub-form #2983
  • fix: association select should not clearing after config data scope #2984
  • fix(plugin-workflow): fix node form values when closed #2978
  • fix: button of details is not refresh when updating record #2977
  • fix: docs ci #2976
  • fix: avoid infinite loop #2974
  • feat: drop table with cascade option #2973
  • fix: client docs #2965
  • fix(variable): compat $date #2971
  • fix: add child action should omit children data #2969
  • chore: destory collection in share collection plugin #2968
  • fix: application bug #2958
  • perf: avoid page lag or stuttering #2964
  • fix: percent field component should support decimal point #2966
  • refactor: remove useless code #2961
  • test: client ui test #2736
  • fix: import action should not visible when view collection not editable #2957
  • refactor(plugin-workflow): add exports for client #2960
  • fix(plugin-workflow): fix canvas style #2959
  • fix(plugin-workflow): fix variables and form changed #2955
  • test(custom-request): update test case, avoid failed #2954
  • fix: create collection report error #2953
  • fix: target collection pointed to by tableoid is incorrect #2952
  • feat(plugin-workflow): add zoomer for workflow canvas #2951
  • feat(map-plugin): supports connecting each point into a line #2216
  • fix(calendar): render data of next month is incorrect #2942
  • fix(custom-request): parsed not working when the value of the variable is of type o2m. #2926
  • fix: improve local storage options #2943

Commits

  • chore(versions): 😊 publish v0.15.0-alpha.1 29457cb
  • chore: update changelog 3b2ad2f
  • fix: env APPEND_PRESET_LOCAL_PLUGINS 5c93750

相關推薦

2022-08-16

NocoBase 是一个极易扩展的开源无代码开发平台。  本周我们发布了 v0.7.4-alpha.7,带来以下新功能: 字段默认值 字段验证规则 开发实例 界面配置模式快捷键 看板支持描述 标签页图标 新的多语言切换  

2023-11-28

i-Cloud 全方位升级(不兼容原框架) 项目代码、文档 均开源免费可商用 遵循开源协议在项目中保留开源协议文件即可 活到老写到老 为兴趣而开源 为学习而开源 为让大家真正可以学到技术而开源 系统演示: https://plus-doc.dr

2023-11-16

i-Cloud 全方位升级(不兼容原框架) 项目代码、文档 均开源免费可商用 遵循开源协议在项目中保留开源协议文件即可 活到老写到老 为兴趣而开源 为学习而开源 为让大家真正可以学到技术而开源 系统演示: https://plus-doc.dr

2023-09-20

截图 仓库软件新增 【外设驱动】 新增惠普打印机开源驱动 【开源软件】 NCDU、babeld、axel、btop、mtr、 libogg、bird、s-tui、TeX Live、openvpn、Fastfetch(替代neofetch)、autodep8、perf3、arping、sbuild、、xorgxrdp、e2fsprogs、cmatrix

2023-03-09

、可靠的物联网服务,助力万物互联互通。 smartboot开源组织,一个容易被误认为是在“重复造轮子”的低调组织。曾获得 2020 年度 OSC 中国开源项目「优秀 Gitee 组织 」荣誉。 该组织内的明星项目包括: smart-socket

2023-09-26

场景全方位升级(不兼容原框架) 项目代码、文档 均开源免费可商用 遵循开源协议在项目中保留开源协议文件即可 活到老写到老 为兴趣而开源 为学习而开源 为让大家真正可以学到技术而开源 本框架与RuoYi的功能差异

2023-11-28

场景全方位升级(不兼容原框架) 项目代码、文档 均开源免费可商用 遵循开源协议在项目中保留开源协议文件即可 活到老写到老 为兴趣而开源 为学习而开源 为让大家真正可以学到技术而开源 本框架与RuoYi的功能差异

2023-08-05

发者大会 2023 (HDC.Together) 今日开启。 大会上,华为正式发布 HarmonyOS 4(鸿蒙 4)操作系统。据悉,全新的 HarmonyOS 4 在隐私安全、AI 大模型能力和个性交互等方面有全新突破。 华为介绍称,HarmonyOS 4 的小艺是首个具备 AI 大模

2023-11-15

场景全方位升级(不兼容原框架) 项目代码、文档 均开源免费可商用 遵循开源协议在项目中保留开源协议文件即可 活到老写到老 为兴趣而开源 为学习而开源 为让大家真正可以学到技术而开源 系统演示: https://plus-doc.dro

2023-07-13

7月8日,华为开发者大会2023(Cloud)期间,由华为云开源主导的“5大开源项目发布与更新,多种底层能力助力开发者实现应用创新”分论坛圆满落幕。 在本次分论坛中, 华为云开源业务总经理邓明昆介绍了华为云开源的发展现

2024-04-18

diboot 是一个在开发框架上长出来的低代码平台,天生具备pro-code优势的同时,也具备很强的低/零代码能力,可在pro-code、low-code、no-code之间灵活切换,有效赋能开发者,实现开发和维护过程的提质降本增效。 Diboot v3.3.0 版本

2023-04-01

,是一个稳定可靠的组件库,我们希望将内部的优秀实践开源出来,服务于更广大的企业和个人开发者,另一方面技术在不断地进步,我们希望携手社区开发者一起探索新技术,不断扩展 OpenTiny 的能力边界,让更多开发者受益

2023-03-12

体验实地操作。有问题可以前往官方论坛进行交流...... 开源版体验 前台体验: http://test.sho‍pw‍ind.net 买家测试账号:buyer 密码:123456 支付密码:123456 后台体验: http://test.s‍hopwind.net/admin 平台管理员账

2022-10-28

,支持仅生成工程脚手架的功能,该功能会忽略生成业务代码,方便用户进行原始框架的快速搭建。 图和真相