JSON 的超集,配置界的编译器。
BON 是一门编译期执行的、声明式的数据转换语言。写的时候像代码,用的时候是数据。
# 模板复用
cpu-{"cpu": "250m", "memory": "256Mi"}
# 类与继承
class WebService {
"replicas": 1,
"resources": {cpu}
}
# 标准库转换
std.map([1, 2, 3], fn(x) { return x * 2 })
// 输出永远是纯 JSON
{ "service": { "name": "api", "replicas": 1, "resources": {"cpu":"250m","memory":"256Mi"} } }- 完全兼容 JSON — 所有合法 JSON 都是合法 BON
- 编译期求值 — 所有逻辑在解析时完成,输出纯 JSON,零运行时
- 确定性 — 图灵不完备,相同源码输出一致
- 模板系统 — 消除重复配置
- 类与继承 — 可复用的数据结构
- 标准库 — 字符串、数组、对象操作
- 导入系统 — 多文件拆分
BON/
├── packages/
│ ├── bon-py/ # Python 实现(解析器 + 求值器 + CLI)
│ ├── bon-ts/ # TypeScript 实现(解析器 + 求值器 + CLI)
│ └── bon-vsc-ext/ # VS Code 扩展(语法高亮 + 图标)
├── tests/ # 共享测试
└── use/ # 使用示例
├── bon-py/ # Python 示例
└── bon-ts/ # TypeScript 示例
# Python
pip install -e packages/bon-py
# TypeScript
cd packages/bon-ts && npm install && npm run build
# VS Code 扩展
code --install-extension packages/bon-vsc-ext/bon-language-1.0.0.vsix# CLI
python -m bon_py.cli file.bon
node packages/bon-ts/dist/cli.js file.bon
# Python 库
from bon_py.evaluator import evaluate
result = evaluate('{ "name": "BON" }')
# TypeScript 库
import { evaluate } from "bon-ts";
const result = evaluate('{ "name": "BON" }');文档使用 Vitepress 构建,在 https://docss.sxxyrry.qzz.io/BON/
# Python
cd packages/bon-py && python -m pytest
# TypeScript
cd packages/bon-ts && npm testApache v2.0