《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个用于创建 Web 服务和仪表板的低代码引擎——Yao。
Yao 是一个只需使用 JSON 即可创建数据库模型、编写 API 接口、描述管理后台界面的低代码引擎,使用 Yao 构建的应用可运行在云端或物联网设备上。 开发者不需要写一行代码,就可以拥有 10 倍生产力。
Yao 基于 flow-based 编程思想,采用 Go 语言开发,支持多种方式扩展数据流处理器。这使得 Yao 具有极好的通用性,大部分场景下可以代替编程语言, 在复用性和编码效率上是传统编程语言的 10 倍;应用性能和资源占比上优于 PHP, JAVA 等语言。
Yao 内置了一套数据管理系统,通过编写 JSON 描述界面布局,即可实现 90% 常见界面交互功能,特别适合快速制作各类管理后台、CRM、ERP 等企业内部系统。对于特殊交互功能亦可通过编写扩展组件或 HTML 页面的方式实现。内置管理系统与 Yao 并不耦合,亦可采用 VUE, React 等任意前端技术实现管理界面。
功能特性
- 无代码:使用JSON创建数据库模型、编写接口、描述界面,真正意义上的无代码编程
- 万物互联:支持在 ARM 设备上运行,可用于物联网、边缘计算、工业互联网
- 数据可视化:简单易用的BI组件和功能,赋予商业更多的可能性
- 处理器:内置一系列可以通过数据流、Javascirpt 和 GRPC 插件进行功能扩展的处理器
- 数据流:通过数据流,开发者可以对数据进行任意形式的处理,且支持Javascript
- 插件:基于GRPC的插件机制,支持使用nodejs、python等语言进行功能拓展
- 管理后台:通过编写JSON描述界面布局,快速搭建各种CRM、ERP等企业内部系统
- 文件系统路由:每一个在apis文件夹下的文件都会成为一个可供调用的接口
- 实时查询:内置媲美ES的查询引擎,且通过DSL实现JSON查询,简单且易用
- 极致性能:底层使用Go语言,性能远超Java、PHP,分布式部署,一行命令搞定
- 企业级安全:权限分级,管理员和员工账户分离,Api级别的权限控制,且支持自定义
- 天然分布式:Go语言打包生成各个平台二进制文件,对于有上云需求的用户,很方便
安装部署
部署推荐使用Docker,也可以自行手动部署。
使用 Docker
1 创建容器:
安装 Docker 下载安装 Docker创建并启动容器: docker run -d --restart unless-stopped --name yao -v <app root>:/data/app -p <Port>:5099 yaoapp/yao:0.9.1-amd64
Yao Docker Images:
镜像 | 环境 | 使用场景 |
yaoapp/yao:0.9.1-amd64 | 生产环境 | 适用于云端部署 |
yaoapp/yao:0.9.1-arm64 | 生产环境 | 适用于物联网边缘设备部署 |
2 检查服务状态:
curl http://127.0.0.1:<Port>/api/xiang/ping
手动部署
1 运行安装脚本:
curl -fsSL HTTPS://website.yaoapps.com/install.sh | bash
2 添加用户:
useradd yao
3 创建应用文件夹:
mkdir /yaoapps
4 将应用代码复制到应用目录,例如:
git clone https://github.com/YaoApp/demo-crm.git /yaoapps/demo-crm
注意:生产环境中,请将启动模式设置为 production 。
5 配置服务,使用 pm2 ,supervisor 等服务进程管理工具。
supervisor 配置示例:
[program:demo-crm-server]directory=/yaoapps/demo-crmcommand=/usr/local/bin/yao startprocess_name=demo-crm-servernumprocs=1autostart=trueautorestart=trueuser=yaogroup=yaoredirect_stderr=truestdout_logFile=/yaoapps/demo-crm/supervisor.log
注意:不要使用 root 用户启动服务。
6 启动服务:
supervisor start
7 检查服务状态:
curl http://127.0.0.1:<Port>/api/xiang/ping
代理服务器
如需要使用 HTTPS 或者 一台机器上安装有多个应用,可以使用 Nginx, traefik 等代理服务器。
traefik 配置示例:
[[tls.certificates]]certFile = "/data/certs/star.yaoapps.com.crt"keyFile = "/data/certs/star.yaoapps.com.key"[http.routers.demo-crm]tls = truerule = "Host(`demo-crm.yaoapps.com`)"service = "demo-crm@file"[http.services][http.services.demo-crm.loadBalancer][[http.services.demo-crm.loadBalancer.servers]]url = "http://127.0.0.1:<port>/"
组件示例
A 链接
跳转第三方站点、跳转自定义扩展的页面、各个系统之间进行跳转
{ "Link": { "label": "外部链接", "view": { "type": "a", "props": { "value": ":link" } } }}
Tooltip 提示
提示,鼠标悬浮出现说明文字,常用于简化页面,内容聚焦。
{ "说明": { "label": "说明", "view": { "type": "tooltip", "props": { "value": ":desc" } } }}
Tree 树形控件
文件夹、组织架构、生物分类、国家地区等等,世间万物的大多数结构都是树形结构。使用 树控件 可以完整展现其中的层级关系,并具有展开收起选择等交互功能。
{ "Tree": { "label": "Tree", "edit": { "type": "tree", "props": { "value": ":tree", "checkable": true, "remote": { "api": "/api/tree/search", "query": { "select": ["id", "name"] } } } } }}
NumberCard 数字卡片
数字卡片,通常用来展示关键性的指标信息。
在图表页使用:
{ "name": "云计算相关企业", "width": 6, "type": "numberCard", "props": { "icon": "cloud-outline", "unit": "家" }}
在表单页使用:
{ "表格图表": { "label": "表格图表", "edit": { "type": "chart", "props": { "type": "numberCard", "value": ":service", "hide_label": true, "chart_props": { "height": 240, "icon": "cloud-outline", "unit": "家" } } } }}
折线图
饼图
k线图
旭日图
—END—
开源协议:Apache2.0
开源地址:https://github.com/YaoApp/yao
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。