BLOGE
0.9.8-RC1在线版 · 事实 校验 2026-09-15 · English
附录 G —— DSL 工程参考
第 8 章只讲“个人草稿如何成为团队资产”。本附录保存工程查阅细节,不要求第一次阅读时记住。
import 与 alias
推荐显式写出 alias:
import "./payment-flow" as paymentFlow
没有显式 alias 时,编译器可从路径最后一段推导名称;团队文件仍应显式声明,避免文件重命名同时改变引用名。FileSystemGraphResolver 以当前文件目录解析相对路径;找不到文件、循环导入和重复 alias 都属于建图前错误。
schema 选择速查
| 需要表达的事实 | 形式 |
|---|---|
| 必填标量 | field: String |
| 可缺失 标量 | field: String? |
| 同文件复用结构 | 命名 schema |
| 只出现一次的局部结构 | 内联 { ... } |
| 同类型集合 | List<T> |
| 键值结构 | Map<K,V> |
RC1 的路径验证对内联嵌套结构能给出逐段字段诊断。本书 ch08 probe 因此使用内联 customer;不要把这一观察外推为未来版本的永久语义。
ValidatedSchema 不是 DSL 语法
Java runtime 可用 ValidatedSchema 把 expected schema 与 STRICT、COERCE 或 LENIENT 策略组合。DSL 编译器做结构检查时读取 expected schema;运行时策略决定值如何被验证或转换。两者不能混写成一个结论:编译期路径正确,不等于运行期值一定满足策略。
resolver 扩展边界
自定义 GraphResolver 适合从受控仓库、classpath 或其他版本化来源读取 graph。它必须给出确定身份、明确失败和循环保护。远程读取、缓存失效和签名验证属于宿主系统职责,不由 import 语法自动解决。