技术原则
Fastify 框架及其官方插件中的每个决策都遵循以下技术原则
- 生产环境“零”开销
- “良好”的开发者体验
- 适用于小型和大型项目
- 易于迁移到微服务(甚至无服务器)并返回
- 安全与数据验证
- 如果某些功能可以作为插件,则很可能应该作为插件
- 易于测试
- 不要修改核心代码
- 语义化版本控制和长期支持
- 规范遵循
"零"生产开销
Fastify 旨在通过尽可能减少对应用程序的开销来实现其功能。这通常通过实现快速算法和数据结构以及特定于 JavaScript 的特性来实现。
鉴于 JavaScript 没有提供零开销的数据结构,因此该原则与提供良好的开发者体验和提供更多功能存在矛盾,因为通常这些功能会带来一些开销。
"良好"的开发者体验
Fastify 旨在在其运行的性能点提供最佳的开发者体验。它提供了出色的开箱即用体验,并且足够灵活,可以适应各种情况。
例如,这意味着禁止使用二进制插件,因为大多数 JavaScript 开发人员无法访问编译器。
适用于小型和大型项目
我们认识到大多数应用程序都是从小开始,并随着时间的推移变得越来越复杂。Fastify 旨在随着应用程序复杂性的增长而增长,提供高级功能来构建您的代码库。
易于迁移到微服务(甚至无服务器)并返回
您如何部署路由无关紧要。框架应该“正常工作”。
安全与数据验证
您的 Web 框架是与不受信任数据交互的第一个接触点,它需要充当您系统的第一道防线。
如果某些功能可以作为插件,则很可能应该
我们认识到 Node.js 的 HTTP 框架有无限多的用例。在单个模块中满足这些用例会使代码库难以维护。因此,我们提供钩子和选项,允许您根据需要自定义框架。
易于测试
测试 Fastify 应用程序应该是首要考虑的事项。
不要修改核心代码
修改 Node.js API 或安装更改运行时行为的全局变量会使构建模块化应用程序变得更加困难,并限制 Fastify 的用例。其他框架这样做,而我们不这样做。
语义化版本控制和长期支持
我们提供明确的长期支持策略,以便开发人员知道何时升级。
规范遵循
如有疑问,我们会选择相关规范中定义的严格行为。