为什么复制粘贴?
问题
后端模块(认证、CRUD、文件上传、限流)在不同项目间共享 80% 的骨架代码,但剩余的 20% 让包管理变得尴尬:
- 你需要深入模块内部定制业务逻辑
- 你想拥有代码,而不是被上游版本锁定
- 你的 AI 编程助手能更好地理解和修改直接可见的代码
- 没有依赖地狱 — 默认仅使用 Go 标准库,安全例外会显式声明
解决方案
Scion 提供复制粘贴代码模块。与其安装框架或引入依赖,不如复制生产就绪的模块到你的项目中,拥有每一行代码。
优势
代码所有权
复制后每一行都是你的。没有上游锁定。没有版本冲突。不用等待维护者合并你的 PR。
显式依赖
模块默认仅使用 Go 标准库;安全敏感模块如认证可以显式声明外部安全库。没有隐藏的 go.sum 膨胀,也没有未声明的传递依赖。
安全优先
输入验证、限流、注入防护 — 从第一天就内置。每个模块都包含渗透测试用例。
AI友好
__llms__.md 文件让 AI 助手在 ~200 tokens 内理解模块。你的 AI 编程助手可以直接读取、修改和扩展代码。
框架无关
使用 Go 标准 net/http。可适配 Gin、Echo、Fiber 或任何框架。
经过测试
每个模块包含功能测试和渗透测试用例。运行 go test -v ./... 验证。
对比
| 方式 | 优点 | 缺点 |
|---|---|---|
| 包管理 (npm/go) | 安装简单,自动更新 | 版本锁定,依赖地狱,难以定制 |
| 框架 (Gin/Echo) | 统一API,社区支持 | 锁定,臃肿,学习曲线 |
| 复制粘贴 (Scion) | 完全拥有,依赖显式,可定制 | 手动更新,初始工作量稍大 |
何时使用 Scion
- 你需要快速获得生产就绪的模块
- 你想拥有每一行代码
- 你需要深度定制
- 你使用 AI 编程助手
- 你不想要隐藏的传递依赖
何时不使用 Scion
- 你更喜欢框架约定而非代码所有权
- 你需要上游自动更新
- 你在快速原型开发,不关心依赖