几年前我们基于 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
JaguarJack 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 ?
|