Go 语言生态里的代码生成器不少,但主打"动词算子式"通用生成的开源项目并不多见。仙童(Fairchild)通用代码生成器阵列近期发布了 Beta2 版,核心改进集中在 HTML 原型模式——修复了圆形模式下复杂版面的多处缺陷,生成结果更稳定、更少出错。
动词算子式生成:把动作当积木
仙童的设计思路和常见的模板填充型生成器不同。它把业务动作抽象为"动词算子",比如增、删、改、查、导出、统计等,每个算子对应一套生成逻辑。开发者组合算子来描述需求,生成器据此输出完整的项目代码——前端页面、后端接口、数据库操作一气呵成。
这种方式的优点是:你不需要手写每一层代码,只需要声明"我要哪些动作",生成器帮你把骨架搭好,再在生成的代码上做定制。
Beta2 修了什么
根据发布说明,Beta2 的改动集中在 HTML 原型模式:
- 圆形模式复杂版面缺陷修复:此前在 HTML 原型模式下,涉及圆形布局的复杂页面会出现渲染错位、元素重叠等问题,Beta2 对这类版面做了针对性增强。
- 整体稳定性提升:修复了若干小缺陷,生成产物更可靠。
HTML 原型模式是仙童的一个特色功能——它可以直接生成可浏览的 HTML 原型页面,让你在写后端代码之前就能看到前端交互的大致形态。对于需要快速向团队或客户展示界面思路的场景,这个模式省去了单独搭建原型工具的步骤。
快速上手:从安装到生成一份原型
仙童项目已全面开源,下面演示如何拉取代码并跑一次最小生成流程。
以下示例基于项目开源仓库的典型目录结构,具体路径可能随版本变化,请以实际仓库为准。
1. 克隆仓库并构建
# 克隆仙童代码生成器仓库
git clone https://github.com/jerryshen/fairchild-generator.git
cd fairchild-generator
# 确保 Go 环境就绪(建议 Go 1.20+)
go version
# 编译生成器主程序
go build -o fairchild ./cmd/fairchild
2. 准备一份最小动词算子声明文件
仙童用声明文件描述你要生成的动作组合。下面是一个精简示例,声明一个"用户管理"模块的增、查两个算子,并启用 HTML 原型模式:
# user-module.yaml — 仙童动词算子声明示例
module:
name: UserManagement
table: users
fields:
- name: id
type: int
primaryKey: true
- name: username
type: string
length: 64
- name: email
type: string
length: 128
verbs:
- name: Create
action: insert
fields: [username, email]
- name: List
action: select
fields: [id, username, email]
prototype:
htmlMode: true # 启用 HTML 原型模式
layout: circular # 使用圆形布局(Beta2 重点修复项)
3. 执行生成
# 运行生成器,输出到 ./output 目录
./fairchild generate \
--config user-module.yaml \
--output ./output \
--mode prototype
# 查看生成的 HTML 原型
ls ./output/html/
# 预期输出:index.html create.html list.html 等
# 用浏览器直接打开原型页面
open ./output/html/index.html # macOS
# 或 xdg-open ./output/html/index.html # Linux
生成的 HTML 原型页面可以直接在浏览器中浏览交互流程,圆形布局在 Beta2 下应能正确渲染,不再出现元素错位。
4. 生成完整后端代码(可选)
如果原型确认无误,可以切换到完整生成模式,输出 Go 后端代码:
./fairchild generate \
--config user-module.yaml \
--output ./output-full \
--mode full
# 查看生成的 Go 项目结构
tree ./output-full -L 2
使用建议与注意事项
- 先原型后完整:HTML 原型模式的价值在于低成本验证界面思路。建议先用
prototype模式生成 HTML 页面,确认布局和交互流程后再切换到full模式生成后端代码,避免反复重生成。 - 圆形布局的适用场景:圆形模式适合仪表盘、统计概览等视觉重心突出的页面。如果是常规表格列表页,线性布局更实用,也更少遇到渲染问题。
- 生成代码是起点而非终点:仙童输出的代码骨架覆盖了 CRUD 等常见动作,但业务逻辑的细节(校验规则、权限控制、复杂查询)仍需手动补充。把它当作脚手架而非成品。
- 版本选择:如果你此前用过 Beta1 并遇到 HTML 原型模式的版面问题,Beta2 是值得升级的版本。如果只做后端代码生成、不涉及 HTML 原型,Beta1 到 Beta2 的差异对你影响不大。
仙童作为动词算子式生成器的开源实践,思路有独到之处——用动作组合代替逐层模板,降低了声明成本。Beta2 对 HTML 原型模式的修复让"先看界面再写代码"的工作流更顺畅,值得在实际项目中试一轮。