跳到主要内容
版本:4.x

groups 与多端导出

本页解决:客户端、服务器、编辑器如何拿到不同的表和字段。

决策树

需要分端吗?
├─ 否 → 一个 target(如 all),groups 包含全部
└─ 是 → 为每端建 target
├─ client → groups: ["c"]
├─ server → groups: ["s"]
└─ editor → groups: ["e"](可选)

生成时:

dotnet Luban.dll --conf luban.conf -t client -c cs-simple-json -d json -x outputCodeDir=... -x outputDataDir=...
dotnet Luban.dll --conf luban.conf -t server -c cs-dotnet-json -d json -x ...

表级 vs 字段级

位置空 group 的含义
table若某 group 的 default: true,则自动属于该组
field空 = 所有分组都导出

字段只要客户端时:在 Excel ##group 行填 c,或在 schema 里给 field 设 group。

默认导出集合与 * 语义

由当前 target 导出的 table 的 valueType 递归引用计算出默认导出集合。集合内的 enum/bean 即使 groups 不属于当前 target,也会导出。

规则说明
groups 含 *属于所有分组
enum/bean 含 *即使未被引用也生成代码
table/enum/bean groups 为空当 target 的 groups 中有 default: true 的组时导出,否则不导出
field groups 为空导出给所有分组(与 table 规则不同)

index 未写且 mode 为空或 map 时,常自动取 valueType 第一个字段为主键;index 多个字段时 mode 常为 list。

常见组合

场景做法
数值仅服务器字段 group=s
表仅客户端表 group=c
编辑器要全量原始结构target editorec,s,e,并选用 editor 向 codeTarget

常见坑

  • 以为「没填 group 就不导出」——对 field 恰恰相反。
  • client/server 共用一个 output 目录导致互相覆盖。
  • 改了 group 却仍用旧 -t,以为配置丢了。

相关链接