Feb 19, 2025
2 min read
Rust,
Framework,

你喜欢大而全的框架还是小而美的类库?

不同编程语言中 Web 框架的选择,分析了“大而全”和“小而美”两种类型的框架在国内外开发环境中的优缺点,并结合个人经验给出了选择建议。

无论使用哪种编程语言,都会存在从小而美到大而全的 Web 框架。传统编程语言往往更倾向于大而全的框架,例如 Java 的 Spring Boot、PHP 的 Laravel、Python 的 和 Ruby 的 Ruby on Rails。

相比之下,新兴语言则更多偏向于小而美的设计。比如 Go 语言中流行的 Gin 和 Echo,Rust 中的 Axum 和 Actix 等。

严格来说,像 Gin、Echo、Axum 或 Actix 这些工具其实更接近“类库”而非严格意义上的“框架”。

哪种更好?

在国内的开发氛围中,显然更偏好大而全的框架。这种倾向可能与国内对敏捷开发和快速交付的高度重视有关。大而全意味着开箱即用,一周开发一个系统并非遥不可及。此外,这类框架通常已经为开发者提供了所谓的“最佳工程范式”,让用户无需过多关注架构本身的问题。

然而,这种便利性是有代价的——这些框架往往限制了用户的自由度,难以进行深度定制。

相反,小而美的框架赋予用户更高的自由度,可以随心所欲地调整架构和模块选择。不喜欢某个 ORM?完全可以换另一个!想自己决定代码组织方式?也完全没问题!这也是为什么国外开发者普遍更偏爱这类框架的原因。

Rust 中的大而全

在 Rust 生态中,Axum、Actix、Rocket 和 Warp 都是小而美的典范。它们更像是一个个积木块,需要开发者亲手搭建出理想的系统。

而 Loco 则是 Rust 中少有的大而全的框架之一,类似于 Ruby 的 Ruby on Rails。它提供了完整的脚手架功能,开箱即用地支持数据库、任务调度、缓存、认证等功能。选择 Loco 几乎等同于获得了更好的最佳实践、更流畅的开发体验、集成测试支持以及更快的应用程序构建能力。

值得一提的是,还有最新出现的 Cot,这是一个风格类似 Python 的 Django 的框架,基于 Axum 构建,并使用 SeaQuery 作为 ORM。不过,它目前仍处于非常早期的阶段。如果想要尝试一个成熟的大而全框架,Loco 可能是更好的选择。

我的选择

个人而言,我更倾向于简洁的框架。因为喜欢尝试新事物,所以希望框架不要过于侵入式。例如,多年前在一个个人 Go 项目中,我曾轻松地将框架从 Gin 切换到 Echo,再切换到 Chi,几乎没有任何副作用。

但在团队协作中,大而全的框架通常是更好的选择。它们能够有效约束代码质量,减少因个人风格差异导致的混乱。这或许也是 Spring Boot 在国内如此流行的原因之一。

整体来看,无论是小而美还是大而全,选择适合当前需求和团队背景的框架才是最重要的。

项目地址: