代码生成器

1. 概述

本框架的前端代码生成机制独具特色,与其他框架显著不同。它并未依赖于后端模板引擎与模板的生成方式,而是构筑了一个独立完整的体系,充分运用了前端的技术栈来实现代码生成的流程。具体而言,它主要包含两大核心部分:一是可视化的前端代码生成元数据管理系统,二是前端代码生成命令行界面(CLI)。其中,CLI能够接收特定指令,通过调用后端接口来获取元数据,进而利用art-template模板引擎进行渲染,最终生成与指令相对应的模板代码。这一设计不仅提高了代码生成的灵活性和效率,还确保了生成的代码质量符合前端开发的最佳实践。

2. 元数据管理系统

2.1 模型分组

模型分组

2.2 数据模型

数据模型

2.3 导入

模型导入功能,允许用户将已存在的数据库表结构导入到系统,并生成相应的数据模型。所以我们的开发流程是,先后端创建好表结构(后端生成代码),然后导入到前端,前端再生成代码。 导入

前端代码生成

generate/
├── config/
│   └── default.json    # 配置文件
├── templates/          # 模板文件
│   └── antd/           # antd模板
│       ├── api.art     # api模板
│       ├── detail.art  # detail模板
│       ├── form.art    # form模板
│       ├── index.art   # index模板
│       └── schemas.art # schemas模板
├── main.mjs            # 主程序
└── package.json

1. 修改配置文件config/default.json

配置文件config/default.json用于配置生成器的参数,包括模板路径、生成路径、接口地址等。一般只需要修改apiUrl参数即可。

{
   "apiUrl": "https://flow.mldong.com/api/dev/schema/getByTableName",
}

修改为:

{
   "apiUrl": "http://localhost:18080/dev/schema/getByTableName",
}

即将https://flow.mldong.com/api修改为http://localhost:18080,其中/dev/schema/getByTableName为获取元数据的接口地址

2. 导入数据库表结构

将数据库表结构导入到系统,并生成相应的数据模型。导入后可进行二次修改,一般会修改字段的组件配置信息。

3. 生成代码

进入代码生成目录

注意:代码生成一定要进入代码生成目录下

cd generate

查看帮助

node main.mjs --help
项:
      --version    显示版本号                                                    [布尔]
  -t, --tableName  表名称                                                [字符串] [必需]
  -c, --cover      是否覆盖                                            [数字] [默认值: 0]
  -d, --data       是否仅生成元数据                                        [数字] [默认值: 0]
  -h, --help       显示帮助信息                                                   [布尔]

代码生成配置文件

config/default.json

指定某个元数据生成代码

node main.mjs -t biz_demo

指定某个元数据生成代码-覆盖式

node main.mjs -t biz_demo -c 1

指定某个元数据生成代码-仅覆盖元数据文件

node main.mjs -t biz_demo -d 1

4. 配置路由

目前该版本的代码生成并没有生成路由文件,需要手动配置。按照前端开发规范,自行添加即可,具体看前端开发文档路由菜单

关于菜单同步

默认情况下,本框架采用前端路由模式进行菜单配置,超级管理员拥有所有权限。当部署到生产环境并需要进行权限分配时,需将菜单同步至后端。操作流程为:使用超级管理员账号登录系统,进入【系统设置】->【前端路由】模块,执行菜单同步操作。同步后,即可提供给【系统设置】->【角色管理】->【授权菜单】给角色分配权限。