Golang 库常见问题
#
graphql-go/graphql vs 99designs/gqlgen- Code First vs Schema First
- Reflection vs Hard Code
- 不透明代码 vs 透明逻辑
- 统一逻辑 vs 独立逻辑
- 统一逻辑可动态调整
- 独立逻辑更易于做特殊 Case
- 代码少 vs 代码多
- 代码少 - 选择手写
- 代码多 - 选择生成
如何选择和决定更多还要看数据层的实现逻辑。
如果数据层也有很好的元数据信息,那么 GraphQL Schema 也可以生成,处理的逻辑代码也可以生成,如何选择就会更加灵活。
- 例如 gorm 配合 graphql-go/graphql
- 都基于反射
- 运行时生成关系 - 动态
- 例如 ent 配合 99designs/gqlgen
- 都基于生成
- 提前生成 schema 和处理逻辑 - 静态
#
urfave vs cobra- urfave
- 偏框架性质
- opinionated
- cobra
- 工具集 - 更加灵活
- pflag 处理 flag, viper 处理配置