Yao 简单介绍
Yao 是什么?
YAO 是一款开源应用引擎,使用 Golang 编写,仅一个命令行工具,下载即用。适合用于开发业务系统、网站/APP API 接口、管理后台、自建低代码平台等。
YAO 使用的开发语言为 golang/react/javascript。
开发理念:
- 元数据编程。通过模型配置文件来驱动数据库配置与界面配置。
- AI。2023 人工智能大爆发,使用人工智能解析自然语言,生成代码,已成为现实,人人都能编程。
- 后端配置驱动 UI,平台提供前端框架,界面配置在后端编写。配置文件使用的格式是 json,后面会支持 jsonc。jsonc 可以在 json 文件中写注释。
- 零代码编程。定义好模型文件后,框架会生成一系列的默认配置,开箱即用。
- 编程编排。引擎平台把各个组件功能封装成一个个的“处理器”,处理器之间没有代码级别的耦合,可使用配置文件串联组合不同的功能,非常的灵活。
- 无限扩展。无论是前端 Xgen 还是后端 Yao,都提供了对外的扩展性,可以使用插件各种个化化的需求。
使用这个平台的主要开发工作:
- 编写 DSL 配置文件,常用的功能只需要写好配置文件即可。
- 开发 JS 脚本,使用 js 可增强数据操作能力,Yao 引擎预留了所有的数据处理出口。
- 开发 GO 插件,特殊的需求可使用插件来完成。
- 代码生成。平台引擎中提供了 Studio 命令/接口,可动态的生成配置文件。
- 查文档,看源代码,找处理器接口定义。
优势
- golang 开发的程序布署非常方便,性能也非常好。
- react 开发的前端功能丰富,可以满足大部分的需求。
- 开箱即用,对于标准的后台 CURD 功能,只需要极少的配置即可让系统跑起来。
后端模块:
- Yao API 服务 https://github.com/yaoapp/yao
- Gou 引擎框架 https://github.com/yaoapp/gou
- Xun ORM 数据库驱动 https://github.com/yaoapp/xun
- Kun 常用数据处理包 https://github.com/yaoapp/kun
Yao 主要功能有:
- 提供 API 网关的功能,可当 rest api 网关,支持当 web socket 服务器。
- 自带用户登录验证功能,可自定义。
- 给前端框架 Xgen 提供 Api 支持。
- 自带数据操作 API 接口,有现成的对表的增删除改 API 接口。
- 文件上传下载接口。
Gou 主要功能:
- 流程编排处理器。
- js v8 引擎解析运行。
- 数据库操作封装。
- 后台定期执行任务。
- grpc 插件封装。
Xun 主要功能:
- 封装数据库访问
- 可适用不同的数据库。
Kun 主要功能:
- 一些实用的数据处理工具
依赖:
- V8go 引擎 https://github.com/rogchap/v8go
前端框架:
Xgen 封装了管理后台 CURD 场景所需要的大部分控件,在后端写好配置文件后,前端就能进行数据增删改查。Xgen 还提供了远程组件的功能,预留了框架扩展的能力。
Xgen 框架 UI 组件主要是使用 Ant Design:
- React: https://react.dev/
- Ant Design: https://ant.design/
版本变更历史:
注意:各个版本变化比较大,特别是与 xgen 的相关的配置不同版本之间不兼容,下载别人的 Yao 项目需要使用特定的版本的 yao 程序。
- Yao 0.10.3 开发版
- Yao 0.10.3 预发布
- Yao 0.10.2 正式版
- Yao 0.10.1 正式版
- Yao 0.9.1 正式版
小缺点:
- 由于过于灵活,在开发应用时,无法使用编辑器智能检查处理器的参数类型。需要大量的查阅文档与源代码。
- 平台使用 js 引擎 v8。功能是足够的强,但是在开发时缺少开发工具支撑,调试会比较痛苦。
- 配置文件使用 json 格式。无法校验类型格式,容易出错,上手比较难。
为了解决这些麻烦事,本人作了一些尝试:
- js 配置文件使用 json-schema 进行校验。YAO 应用 JSON-SCHEMA
- js 脚本的调试使用 nodejs 作些处理后也可以直接在 vscode 里进行调试,虽然配置有点麻烦,但是使用却是非常的方便。YAO 应用调试器