技术原则
Fastify 框架及其官方插件的每一个决策都遵循以下技术原则:
- 生产环境中的“零”开销
- “良好”的开发者体验
- 适用于小型和大型项目
- 容易迁移到微服务(甚至是无服务器)并回迁
- 安全性和数据验证
- 如果某项功能可以做成插件,那么它很可能应该被做成插件
- 易于测试
- 不要修改核心代码
- 半自动版本控制及长期支持
- 遵循规范
生产环境中的“零”开销
Fastify 力求以最小的开销实现功能。这通过使用快速算法、数据结构和 JavaScript 特定特性来实现。
由于 JavaScript 没有提供零开销的数据结构,这一原则可能会与提供良好的开发者体验和额外的功能相冲突,因为这些通常会带来一些开销。
“良好”的开发者体验
Fastify 力求在性能方面提供最佳的开发者体验。它提供了出色的开箱即用体验,并且足够灵活以适应各种情况。
例如,禁止使用二进制扩展包,因为大多数 JavaScript 开发者没有访问编译器的能力。
适用于小型和大型项目
大多数应用程序从规模较小开始,随着时间推移变得越来越复杂。Fastify 力求随着这种复杂性的增长而发展,并提供高级功能来结构化代码库。
容易迁移到微服务(甚至是无服务器)并回迁
路由部署不应成为问题。框架应该“无缝”工作。
安全性和数据验证
Web 框架是与不可信数据接触的第一个点,必须作为系统的第一道防线发挥作用。
如果某项功能可以做成插件,那么它很可能应该被做成插件
鉴于 HTTP 框架的无限用例,试图在一个模块中满足所有需求会使代码库难以维护。因此,提供了钩子和选项来根据需要自定义框架。
易于测试
测试 Fastify 应用程序应该是首要关注的问题。
不要修改核心代码
修改 Node.js API 或安装会改变运行时的全局变量会使构建模块化应用程序变得更加困难,并限制了 Fastify 的应用场景。其他框架可能会这样做,但 Fastify 不会。
半衰期支持和长期支持策略
提供了一个清晰的 长期支持策略,以告知开发者何时进行升级。
遵循规范
在不确定的情况下,我们选择遵循相关规范所定义的严格行为。