开源无代码/低代码平台 NocoBase v0.19,应用流程优化
NocoBase 是一个极易扩展的开源无代码开发平台。 不必投入几年时间、数百万资金研发,花几分钟时间部署 NocoBase,马上拥有一个私有、可控、极易扩展的无代码开发平台。
新特性
遥测
- 开发文档:https://docs-cn.nocobase.com/development/server/telemetry
- 内核 API:https://docs-cn.nocobase.com/api/telemetry/telemetry
- Prometheus 插件:https://docs-cn.nocobase.com/plugins/telemetry-prometheus
应用的备份和还原
内核优化
命令行的优化
NocoBase 0.19 及以上版本,插件自定义的命令必须放在插件的 src/server/commands/*.ts
目录下,内容如下:
export default function(app) { app.command('custom1').action(); }
命令行的执行流程:
Command 的特殊配置
ipc()
当 app 运行时,命令行通过 ipc 发送指令,操作正在运行的 app 实例,未配置 ipc() 时,会新建一个应用实例,再执行操作(不会干扰正在运行的 app 实例)auth()
进行数据库检验,如果数据库配置不正确,不会执行该命令preload()
是否预先加载应用配置,也就是执行 app.load()
可以根据命令的实际用途进行配置,例子如下:
app.command('a').ipc().action() app.command('a').auth().action() app.command('a').preload().action()
安装流程优化
启动流程优化
升级流程优化
升级的 migrations 有 beforeLoad、afterSync 和 afterLoad 之分:
-
beforeLoad:在各模块加载前执行,分为三个阶段:
- 内核模块加载前
- preset 插件加载前
- 其他插件加载前
-
afterSync:在数据表配置与数据库同步之后,分为三个阶段:
- 内核表与数据库同步之后
- preset 插件的表与数据库同步之后
- 其他插件的表与数据库同步后
-
afterLoad:应用全部加载之后才执行
export default class extends Migration { // 运行的时机 on = 'beforeLoad'; // 满足以下应用版本号时才执行 appVersion = '<=0.13.0-alpha.5'; // 满足以下插件版本号时才执行 pluginVersion = '<=0.13.0-alpha.5'; // 升级脚本 async up() {} }
新增 create-migration 命令
创建 migration 文件
yarn nocobase create-migration -h Usage: nocobase create-migration [options] <name> Options: --pkg <pkg> package name --on [on] Options include beforeLoad, afterSync and afterLoad -h, --help display help for command
示例
$ yarn nocobase create-migration update-ui --pkg=@nocobase/plugin-client 2024-01-07 17:33:13 [info ] add app main into supervisor 2024-01-07 17:33:13 [info ] migration file in /nocobase/packages/plugins/@nocobase/plugin-client/src/server/migrations/20240107173313-update-ui.ts ✨ Done in 5.02s.
将在插件包 @nocobase/plugin-client
的 src/server/migrations
里生成一个 migration 文件,名为 20240107173313-update-ui.ts
,初始内容如下:
import { Migration } from '@nocobase/server'; export default class extends Migration { on = 'afterLoad'; // 'beforeLoad' | 'afterSync' | 'afterLoad' appVersion = '<0.18.0-alpha.10'; async up() { // coding } }
插件的约定式目录
|- /plugin-sample-hello |- /dist # 插件编译之后的目录 |- /src # 插件源码 |- /client |- plugin.ts |- index.ts # 客户端入口 |- /locale # 约定式目录,前后端共享的多语言文件目录 |- /swagger # 约定式目录,swagger 文档 |- /server |- collections # 约定式目录,插件的数据表配置 |- commands # 约定式目录,自定义命令 |- migrations # 约定式目录,迁移文件 |- plugin.ts # 插件类 |- index.ts # 服务端入口 |- index.ts |-.npmignore |- client.d.ts |- client.js |- package.json |- server.d.ts |- server.js
测试流程优化
提供了更易用的 createMockServer、startMockServer 方法用于编写测试用例
createMockServer()
快速创建并启动一个应用startMockServer()
快速启动一个应用(不会重新安装)
import { createMockServer } from '@nocobase/server'; describe('test example', () => { let app: MockServer; beforeEach(async () => { app = await createMockServer({ plugins: ['nocobase'], }); }); afterEach(async () => { await app.destroy(); }); test('case1', async () => { // coding... }); });
不兼容的变化
collections、commands、migrations 配置变更为约定式目录
示例一:通过 importCollections 加载的 collections,代码直接删掉,collections 配置文件必须放在 src/server/collections
目录下
export class AuthPlugin extends Plugin { async load() { - await this.importCollections(resolve(__dirname, 'collections')); } }
示例二:通过 this.db.import 加载的 collections,代码直接删掉,collections 配置文件必须放在 src/server/collections
目录下
export class AuthPlugin extends Plugin { async load() { - await this.db.import({ - directory: resolve(__dirname, 'collections') - }); } }
示例三:通过 db.collection() 定义的 collection,建议放到 src/server/collections
目录下
export class AuthPlugin extends Plugin { async load() { - this.db.collection({ - name: 'examples', - }); } }
新增 src/server/collections/examples.ts
文件,内容如下:
import { defineCollection } from '@nocobase/database'; export default defineCollection({ name: 'examples', });
示例四:移除 db.addMigrations(),migration 文件放置 src/server/migrations
目录下
export class AuthPlugin extends Plugin { async load() { - this.db.addMigrations({ - namespace: 'auth', - directory: resolve(__dirname, 'migrations'), - context: { - plugin: this, - }, - }); } }
示例五:自定义命令行
export class MyPlugin extends Plugin { load() { - this.app - .command('echo') - .option('-v, --version'); - .action(async ([options]) => { - console.log('Hello World!'); - if (options.version) { - console.log('Current version:', app.getVersion()); - } - }); - } }
新增 src/server/collections/echo.ts
文件,内容如下:
export default function(app) { app .command('echo') .option('-v, --version'); .action(async ([options]) => { console.log('Hello World!'); if (options.version) { console.log('Current version:', await app.version.get()); } }); }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
EasyGoAdmin 敏捷开发框架 Gin+AntdVue 版本 v2.6.0 发布
v2.6.0 更新内容: 1、升级 Go 版本 v1.20; 2、升级 go.mod 依赖包管理文件; 3、新增文章 CMS 管理模块; 4、新增表结构索引,规范索引前缀; 5、优化表结构,规范字段注释; 6、优化模块模型,规范参数大小写; 7、优化表单元素及传参命名规则; 8、升级代码生成器,增强解析规则; 9、新增生成器一键同步生成权限节点功能; 10、新增富文本编辑器本地图片上传功能; 11、重构富文本上传组件,支持本地图片上传; 12、解决添加广告位栏目组件无法显示的问题; 13、修复近期用户反馈的问题; 一款 Go 语言基于 Gin、Xorm、Vue3、AntDesign、MySQL 等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架,可快速搭建前后端分离后台管理系统,本着简化开发、提升开发效率的初衷,框架自研了一套个性化的组件,实现了可插拔的组件式开发方式,同时为了敏捷快速开发,框架特地集成了代码生成器,完全自主研发了自定义 GO 后端服务模板和前端 Vue 自定义模板,可以根据已建好的表结构,可以快速的一键生成整个模块的所有代码和增删改查等等功能业务,...
- 下一篇
socket.d.js v2.3.4 支持
Socket.D 是基于"事件"和"语义消息""流"的网络应用层协议。有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”。支持 tcp, udp, ws, kcp 传输。协议特点可参考《官网介绍》。 Socket.D.js 兼容更新说明 是近期发布的 socket.d 协议 js client 实现。经过社区的努力,现已: 兼容 h5(浏览器) 兼容 uniapp(浏览器、android, ios) 兼容 微信小程序(wx 接口)//新增 兼容 node.js Socket.D.js 能力演示: 监听(相当于 ws 的增强) 多了事件路由。可以用一个连接,监听不同的业务事件(类似于 http path)。 //打开客户端会话(用 url 形式打开) let session = await SocketD.createClient("sd:ws://127.0.0.1:8602/?token=1b0VsGusEkddgr3d") .listen(SocketD.newEventListener() .doOnOpen(s ->...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程