目录
之前写过一篇关于阿里的低代码工具LowCodeEngine 的文章,发现大家还是挺感兴趣的。最近又发现了一款很有意思的低代码工具
Yao
,支持使用JSON的形式开发管理系统,不仅可以用来开发后端API,还能用来开发前端界面,简洁而且高效,推荐给大家!
Yao是一款Go语言驱动的低代码应用引擎,目前在Github上已有3.8k+Star
!使用该框架,你可以通过JSON完成90%的接口和页面开发,用来开发管理系统正合适!Yao的名字源于汉字爻(yáo),是构成八卦的基本符号,看样子作者对八卦还是挺有研究的。
下面使用使用Yao开发的界面效果图,暗黑风格,还是挺炫酷的!
使用Docker来安装Yao是非常方便的,下面我们就采用此种方式在Linux上安装它!
docker pull yaoapp/yao:0.9.1-amd64-dev
1
- docker run --name yao \
- -p 5099:5099 \
- -v /mydata/yao:/data/app \
- -d yaoapp/yao:0.9.1-amd64-dev
1
2
3
4
docker exec -it yao /bin/bash
1
yao version
命令来查看版本。
接下来介绍下Yao的使用,我们将以mall项目中的品牌管理功能为例,使用Yao来开发下试试!
首先还是熟悉下Yao的基本使用吧!
/data/app
目录下,使用如下命令初始化项目;- cd /data/app # 进入项目目录
- yao init # 运行初始化程序
1
2
ll
命令查看下项目的目录结构:yao migrate
命令创建数据库表,项目中默认有张测试用的pet表:yao run flows.setmenu
1
yao start
命令启动服务,控制台输出内容如下;
- 账号:xiang@iqka.com
- 密码:A123456p+
1
2
下面我们将使用Yao创建数据模型并实现简单的CRUD操作。
brand.mod.json
,由于容器中的项目目录已经被挂载到了宿主机上,将该文件放到/mydata/yao/models
目录下即可:- {
- "name": "Brand",
- "table": { "name": "brand", "comment": "商品品牌表" },
- "columns": [
- { "label": "ID", "name": "id", "type": "ID"},
- { "label": "名称", "name": "name", "type": "string" },
- { "label": "首字母", "name": "first_letter", "type": "string" },
- { "label": "排序", "name": "sort", "type": "integer" },
- { "label": "品牌故事", "name": "brand_story", "type": "string"},
- { "label": "品牌logo", "name": "logo", "type": "string","length":255}
- ],
- "values": [
- { "name": "万和", "first_letter": "W", "sort": 0, "brand_story": "万和的故事","logo":"test"},
- { "name": "三星", "first_letter": "S", "sort": 100, "brand_story": "三星的故事","logo":"test"},
- { "name": "小米", "first_letter": "M", "sort": 200, "brand_story": "小米的故事","logo":"test"}
- ],
- "option": { "timestamps": true, "soft_deletes": true }
- }
- cd /data/app
- yao migrate -n brand
1
2
yao run models.brand.Get '::{}'
1
yao run models.brand.Find 1 '::{}'
1
yao run models.brand.Delete 1
1
yao run models.brand.Create '::{ "name": "万和", "first_letter": "W", "sort": 0, "brand_story": "万和的故事","logo":"http://img.macrozheng.com/mall/images/20200607/5b07ca8aN4e127d2f.jpg"}'
1
yao run models.brand.Save '::{"id":2,"brand_story":"修改品牌故事"}'
1
下面我们将使用Yao来开发后端接口,这里将实现一个分页查询和保存接口。
brand.http.json
,放入/mydata/yao/apis
文件夹下;- {
- "name": "Brand",
- "version": "1.0.0",
- "description": "商品品牌管理接口",
- "guard": "bearer-jwt",
- "group": "brand",
- "paths": [
- {
- "path": "/search",
- "method": "GET",
- "guard": "-",
- "process": "models.brand.Paginate",
- "in": [":query-param", "$query.page", "$query.pagesize"],
- "out": {
- "status": 200,
- "type": "application/json"
- }
- },
- {
- "path": "/save",
- "method": "POST",
- "guard": "-",
- "process": "models.brand.Save",
- "in": [":payload"],
- "out": {
- "status": 200,
- "type": "application/json"
- }
- }
- ]
- }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
curl 'http://192.168.3.105:5099/api/brand/search?page=1&pagesize=1&where.name.match=小米'
1
- curl -X POST http://192.168.3.105:5099/api/brand/save
- -H 'Content-Type: application/json'
- -d '{ "name": "新品牌", "first_letter": "X", "sort": 200, "brand_story": "新品牌的故事","logo":"test"}'
1
2
3
下面我们将使用Yao实现品牌管理的前端界面,还是非常简单的!
brand.tab.json
,放入/mydata/yao/tables
文件夹下;- {
- "name": "Brand",
- "version": "1.0.0",
- "decription": "Brand admin",
- "bind": {
- "model": "brand"
- },
- "apis": {},
- "columns": {
- "ID": {
- "label": "ID",
- "view": {
- "type": "label",
- "props": {
- "value": ":id"
- }
- }
- },
- "Name": {
- "label": "Name",
- "view": {
- "type": "label",
- "props": {
- "value": ":name"
- }
- },
- "edit": {
- "type": "input",
- "props": {
- "value": ":name"
- }
- }
- },
- "FirstLetter": {
- "label": "FirstLetter",
- "view": {
- "type": "label",
- "props": {
- "value": ":first_letter"
- }
- },
- "edit": {
- "type": "input",
- "props": {
- "value": ":first_letter"
- }
- }
- },
- "Sort": {
- "label": "Sort",
- "view": {
- "type": "label",
- "props": {
- "value": ":sort"
- }
- },
- "edit": {
- "type": "input",
- "props": {
- "value": ":sort"
- }
- }
- }
- },
- "filters": {
- "Keywords": {
- "label": "输入搜索",
- "bind": "where.name.match",
- "input": {
- "type": "input",
- "props": {
- "placeholder": "请输入关键词"
- }
- }
- }
- },
- "list": {
- "primary": "id",
- "layout": {
- "columns": [
- {
- "name": "ID",
- "width": 80
- },
- {
- "name": "Name",
- "width": 100
- },
- {
- "name": "FirstLetter",
- "width": 200
- },
- {
- "name": "Sort"
- }
- ],
- "filters": [
- {
- "name": "Keywords"
- }
- ]
- },
- "actions": {
- "pagination": {
- "props": {
- "showTotal": true
- }
- }
- },
- "option": {
- "operation": {
- "unfold": true
- }
- }
- },
- "edit": {
- "primary": "id",
- "layout": {
- "fieldset": [
- {
- "columns": [
- {
- "name": "Name",
- "width": 8
- },
- {
- "name": "FirstLetter",
- "width": 8
- },
- {
- "name": "Sort",
- "width": 8
- }
- ]
- }
- ]
- },
- "actions": {
- "cancel": {},
- "save": {},
- "delete": {}
- }
- }
- }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
菜单设置
中添加它。今天体验了一把Yao,确实是一款很有想法的低代码功工具。使用者只需要使用JSON就可以创建数据库、开发后端API和前端界面,极大地提高了开发效率。不过感觉Yao也有一些不足之处,比如说目前只支持暗色主题,还有就是JSON写错了基本没提示,也没有专门的可以提示语法的开发工具!