
几年前我们基于 Php 开发了一个代码生成器,供内部开发使用,后来慢慢发展,使用 Golang 进行了重构,重构之后不仅仅是用来生成 Api ,创建数据库,写 Sql ,还有描述后台界面,都支持了,还整了一个 V8 引擎进去,用来处理一些复杂的数据逻辑,现在我们内部的项目都是基于这个低代码工具来的。
经过半年的整理,还有筹划之后,我们决定把它开源了,因为我们发现,用了 Yao 这个低代码工具,写后台的效率爆炸,按照工时来看效率起码提升了 10 倍。
下面简单介绍一下用法,感兴趣的兄弟可以去点个 star ,支持一下,祝你今年好运爆棚!
引擎: https://github.com/YaoApp/yao
界面: https://github.com/YaoApp/xgen
{ "name": "宠物", "table": { "name": "pet", "comment": "宠物表" }, "columns": [ { "label": "ID", "name": "id", "type": "ID", "comment": "ID" }, { "label": "编号", "name": "sn", "type": "string", "unique": true }, { "label": "名称", "name": "name", "type": "string", "index": true }, { "label": "类型", "name": "kind", "type": "enum", "option": ["猫", "狗"], "default": "猫", "index": true }, { "label": "介绍", "name": "desc", "type": "string", "comment": "详细介绍" } ], "values": [ { "sn": "100001", "name": "Cookie", "kind": "猫", "desc": "一只猫" }, { "sn": "100002", "name": "Beibei", "kind": "狗", "desc": "一只狗" } ], "option": { "timestamps": true, "soft_deletes": true } } { "name": "宠物", "version": "1.0.0", "description": "宠物接口", "guard": "bearer-jwt", "group": "pet", "paths": [ { "path": "/search", "method": "GET", "guard": "-", "process": "models.pet.Paginate", "query": [":query-param", "$query.page", "$quey.pagesize"], "out": { "status": 200, "type": "application/json" } }, { "path": "/save", "method": "POST", "guard": "-", "process": "models.pet.Save", "query": [":payload"], "out": { "status": 200, "type": "application/json" } } ] } { "name": "宠物", "version": "1.0.0", "decription": "宠物管理表格", "bind": { "model": "pet" }, "apis": {}, "columns": { "ID": { "label": "ID", "view": { "type": "label", "props": { "value": ":id" } } }, "编号": { "label": "编号", "view": { "type": "label", "props": { "value": ":sn" } }, "edit": { "type": "input", "props": { "value": ":sn" } } }, "名称": { "label": "名称", "view": { "type": "label", "props": { "value": ":name" } }, "edit": { "type": "input", "props": { "value": ":name" } } }, "类型": { "label": "类型", "view": { "type": "label", "props": { "value": ":kind" } }, "edit": { "type": "select", "props": { "value": ":kind", "options": [ { "label": "猫", "value": "猫" }, { "label": "狗", "value": "狗" } ] } } }, "介绍": { "label": "介绍", "view": { "type": "label", "props": { "value": ":desc" } }, "edit": { "type": "textArea", "props": { "value": ":desc", "rows": 4 } } } }, "filters": { "关键词": { "label": "关键词", "bind": "where.name.match", "input": { "type": "input", "props": { "placeholder": "请输入关键词" } } } }, "list": { "primary": "id", "layout": { "columns": [ { "name": "ID", "width": 80 }, { "name": "编号", "width": 100 }, { "name": "名称", "width": 200 }, { "name": "类型" } ], "filters": [{ "name": "关键词" }] }, "actions": { "pagination": { "props": { "showTotal": true } } }, "option": {} }, "edit": { "primary": "id", "layout": { "fieldset": [ { "columns": [ { "name": "编号", "width": 8 }, { "name": "名称", "width": 8 }, { "name": "类型", "width": 8 }, { "name": "介绍", "width": 24 } ] } ] }, "actions": { "cancel": {}, "save": {}, "delete": {} } } } 1 matrixage OP 各位有什么想法都可以提,我们一直都在优化和改进 |
2 narmgalaxy 2022-02-20 22:28:59 +08:00 看起来令人兴奋!充满想象力! |
3 anxn 2022-02-20 22:42:05 +08:00 via Android 技术选型看着不错 go gin react ,请问下 Yao 支持 postgresql 数据库吗?看到文档有提到 postgresql ,环境变量那块没看到 postgresql 的使用示例 |
5 FightPig 2022-02-20 22:53:03 +08:00 厉害了,关注一下先 |
6 xooass 2022-02-20 23:33:06 +08:00 这是我见过的我最喜欢的后台操作界面,star 了,并且正在测试是否合适我去开发一个海外仓系统,我看已经有一个差不多的演示了 |
8 lyhiving 2022-02-21 00:06:57 +08:00 via Android 我更关注之前的 PHP 生代码生成器会不会开源 |
10 weak 2022-02-21 03:23:02 +08:00 via iPhone 6666666 |
11 akagishigeru 2022-02-21 08:36:33 +08:00 via iPhone 我关心这个 json 页面。是否可以使用 php |
12 XTTX 2022-02-21 10:37:52 +08:00 UI 做得太棒了!第一感觉是什么成熟的第三方模板 |
13 mcfog 2022-02-21 10:39:18 +08:00 via Android 还撸了个 orm ,有空学习一下 |
14 poppub 2022-02-21 11:07:15 +08:00 看起来好强。持续关注了 |
16 bzshow1 2022-02-21 14:23:12 +08:00 @matrixage 支持,很强大的平台。 请问 https://yaoapps.com/doc/ 文档用什么工具生成的? 谢谢。 |
17 matrixage OP @bzshow1 自研的,基于 Nextjs 、Mdxjs 、Git submodules 、Ci ,实现,你如果了解这几个技术,自己就可以搞出来,不过想要做得极简,得花点时间,后续我会在掘金写一篇文章专门介绍这个网站文档是如何设计的。 |
19 Ienge 2022-02-21 19:33:11 +08:00 没看到权限管理相关的 |
20 matrixage OP @Ienge 权限方案分账户来的,ADMIN / USER ,user 的 menu 权限和 api 权限是通过预置数据写入来实现的(因为一些政企项目这方面比较严,不允许随便修改账户权限),我们后续也会支持自定义权限。 你如果有更好的方案,可以提 issure 。 |
21 xueyangkk 2022-03-01 17:58:01 +08:00 很不错 支持下 |
22 shuperjolly 2022-04-20 00:59:54 +08:00 前端页面没有?只有后端设计? |
23 shuperjolly 2022-04-22 07:17:58 +08:00 问下数据库是怎么存储的? sqlite ? |