File contents 高级架构决策
触发条件
用户面临技术选型或架构决策 时激活。
决策矩阵
Monorepo vs Single Package
维度
Single Package
Monorepo
代码量
< 5000 行
> 5000 行
包数量
1 个
2-10 个
团队规模
1-2 人
3+ 人
发布形式
单一产物
多产物(库+CLI+绑定)
复杂度
低
中高
选择
大多数项目从这开始
moon-lottie/morm 采用此模式
Wasm-GC vs JS vs Native
目标
适用场景
优势
劣势
wasm-gc
浏览器/边缘计算
安全沙箱、高性能
工具链较新
js
Node.js/全栈
生态丰富、调试好
无类型安全
native
高性能/系统编程
最高性能
平台相关
双目标
需要 browser + server
最大兼容
维护两套配置
Trait vs Enum(多态选择)
场景
选择
原因
需要外部实现
pub(open)trait
开放扩展
固定变体集合
enum
编译期穷尽性检查
运行时策略切换
enum + match
简单直接
库作者定义接口
pub trait
封闭控制
回调/事件
函数类型
最轻量
设计模式选择
需求
推荐模式
来源
复杂对象构建
Builder 模式
morm CSRGraph
类型间转换
Converter 模式
mbtgraph 6 种 to_xxx
平台差异抽象
Trait 多态
moon-lottie PlatformRenderer
条件分支替代
独立类型 + Trait
mbtgraph 有向/无向分离
DSL/配置
属性驱动
morm #morm.* 属性
执行步骤
Step 1: 明确约束
Step 2: 评估选项
对照上述决策矩阵评估备选方案。
Step 3: 做出决策并记录
记录决策理由(ADR: Architecture Decision Record)
记录放弃的选项及原因
Step 4: 验证可行性
Step 5: 文档化
将决策记录在项目 docs/ 或 ARCHITECTURE.md
SOLID 原则在 MoonBit 中的体现
S (单一职责) : 每个 .mbt 文件/包只做一件事
O (开闭) : 用 pub(open)trait 扩展,不用修改已有代码
L (里氏替换) : CSRGraph 不实现 GraphWritable(只读格式不应有 write 方法)
I (接口隔离) : GraphEdgeIterable 和 GraphBatchReadable 是独立的小 trait
D (依赖倒转) : 依赖 PlatformRenderer Trait 而非具体实现
详细知识
🔗 references/library-design.md Parts 12/14/15 — 架构模式和 SOLID
🔗 references/project-layout.md — Monorepo 模板(3种)
🔗 references/real-world-examples.md — 4 个真实项目架构案例
🔗 references/multi-backend.md — 双运行时架构
🔗 references/decision-matrices.md — 更多决策矩阵
1 --- 2 name: 8-architecture-decisions 3 description: 高级架构决策 4 --- 5 6 # 高级架构决策 7 8 ## 触发条件 9 用户面临**技术选型或架构决策**时激活。 10 11 ## 决策矩阵 12 13 ### Monorepo vs Single Package 14 15 | 维度 | Single Package | Monorepo | 16 |------|---------------|----------| 17 | 代码量 | < 5000 行 | > 5000 行 | 18 | 包数量 | 1 个 | 2-10 个 | 19 | 团队规模 | 1-2 人 | 3+ 人 | 20 | 发布形式 | 单一产物 | 多产物(库+CLI+绑定)| 21 | 复杂度 | 低 | 中高 | 22 | **选择** | 大多数项目从这开始 | moon-lottie/morm 采用此模式 | 23 24 ### Wasm-GC vs JS vs Native 25 26 | 目标 | 适用场景 | 优势 | 劣势 | 27 |------|---------|------|------| 28 | **wasm-gc** | 浏览器/边缘计算 | 安全沙箱、高性能 | 工具链较新 | 29 | **js** | Node.js/全栈 | 生态丰富、调试好 | 无类型安全 | 30 | **native** | 高性能/系统编程 | 最高性能 | 平台相关 | 31 | **双目标** | 需要 browser + server | 最大兼容 | 维护两套配置 | 32 33 ### Trait vs Enum(多态选择) 34 35 | 场景 | 选择 | 原因 | 36 |------|------|------| 37 | 需要外部实现 | **pub(open)trait** | 开放扩展 | 38 | 固定变体集合 | **enum** | 编译期穷尽性检查 | 39 | 运行时策略切换 | **enum + match** | 简单直接 | 40 | 库作者定义接口 | **pub trait** | 封闭控制 | 41 | 回调/事件 | **函数类型** | 最轻量 | 42 43 ### 设计模式选择 44 45 | 需求 | 推荐模式 | 来源 | 46 |------|---------|------| 47 | 复杂对象构建 | **Builder 模式** | morm CSRGraph | 48 | 类型间转换 | **Converter 模式** | mbtgraph 6 种 to_xxx | 49 | 平台差异抽象 | **Trait 多态** | moon-lottie PlatformRenderer | 50 | 条件分支替代 | **独立类型 + Trait** | mbtgraph 有向/无向分离 | 51 | DSL/配置 | **属性驱动** | morm #morm.* 属性 | 52 53 ## 执行步骤 54 55 ### Step 1: 明确约束 56 - 团队规模?目标平台?性能要求?交付时间? 57 58 ### Step 2: 评估选项 59 对照上述决策矩阵评估备选方案。 60 61 ### Step 3: 做出决策并记录 62 - 记录决策理由(ADR: Architecture Decision Record) 63 - 记录放弃的选项及原因 64 65 ### Step 4: 验证可行性 66 - 创建原型验证关键假设 67 - 确认工具链支持 68 69 ### Step 5: 文档化 70 - 将决策记录在项目 docs/ 或 ARCHITECTURE.md 71 72 ## SOLID 原则在 MoonBit 中的体现 73 74 - **S (单一职责)**: 每个 .mbt 文件/包只做一件事 75 - **O (开闭)**: 用 pub(open)trait 扩展,不用修改已有代码 76 - **L (里氏替换)**: CSRGraph 不实现 GraphWritable(只读格式不应有 write 方法) 77 - **I (接口隔离)**: GraphEdgeIterable 和 GraphBatchReadable 是独立的小 trait 78 - **D (依赖倒转)**: 依赖 PlatformRenderer Trait 而非具体实现 79 80 ## 详细知识 81 🔗 `references/library-design.md` Parts 12/14/15 — 架构模式和 SOLID 82 🔗 `references/project-layout.md` — Monorepo 模板(3种) 83 🔗 `references/real-world-examples.md` — 4 个真实项目架构案例 84 🔗 `references/multi-backend.md` — 双运行时架构 85 🔗 `references/decision-matrices.md` — 更多决策矩阵
morning-start/agent-skills/tree/main/lang/moonbit/skills/8-architecture-decisions commit fe905fa661
Frequently asked questions How do I install the 8 Architecture Decisions skill? Run npx skillmds@latest add morning-start/8-architecture-decisions in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the 8 Architecture Decisions skill do? 高级架构决策 It is listed under Coding & Dev Tools on SkillMD.
Is 8 Architecture Decisions safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with 8 Architecture Decisions? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is 8 Architecture Decisions free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published 8 Architecture Decisions? morning-start (@morning-start) published this skill. Their other Agent Skills are listed on their SkillMD profile.