最近,又有新的基于Rust实现的Web框架上线,他就是Teo。Teo 是下一代 Web 框架。与任何其他 Web 服务器框架一样,开发人员编写代码、启动服务器并进行部署。 Teo 的独特之处在于大部分编码都可以使用直观的模式语言来完成。对于 Teo 模式语言不提供的功能,Teo 允许开发人员生成 ORM 模型实体、编写自定义代码并使用后端语言路由处理程序。它由以下部分组成:
- Teo schema:直观、创新的模式语言,具有描述性和可读性
- Teo 服务器:用 Rust 编写的高性能核心以及 Node.js、Python 和 Rust 的 API 绑定
- Teo CLI:一种 CLI 工具,可读取架构并执行作业,包括数据库迁移、运行服务器和播种数据
- Teo 查询客户端:适用于多种平台和语言的自动生成的类型安全查询构建器
Teo 服务器核心是用 Rust 编写的。它的性能优于 Java 和 Go。得益于 Teo 模式语言,开发 Teo 应用程序甚至比脚本语言更快。这使得 Teo 几乎成为 API 开发的完美选择。
使用传统的 Web 框架,开发人员需要声明每个路由,编写大量样板代码来连接事物。不提供过滤、排序和分页等常用功能。开发人员需要找到一种方法来实现它。开发人员编写的函数越多,开发人员发现的重复项就越多。调试 SQL 查询或 MongoDB 聚合非常麻烦且容易出错。
在现代前端开发中,从 API 响应实现数据类型和接口感觉更像是用另一种语言重新声明这些模型类型。这些宝贵的时间可以节省下来。
Teo 使开发人员可以轻松地使用声明性模式语言设置 Web 服务器。它还为不同的前端语言和框架生成客户端。T
Teo 的主要目标是提高应用程序开发人员在使用 Web 服务器和数据库时的工作效率。以下是 Teo 如何实现这一目标的一些示例:
- 用于编写可读数据模式和服务器文件的有效模式语言
- 具有管道的强大且可读的逻辑
- 自动生成类型安全的查询客户端
- 无错误,节省调试时间
- 更少的样板文件,使开发人员可以专注于其应用程序的独特逻辑
- 服务器代码和客户端代码中的自动完成

其他 HTTP 框架的问题
性能和开发成本
用 Ruby、Python 和 Node.js 编写的框架性能较差,但比编译语言的框架开发速度更快。用 Go 和 Java 编写的框架性能更高,但开发速度较慢。由于语言的特性,生态系统中没有很好的 ORM。 C++具有更好的性能,但几乎每个使用它的公司都有自己的框架和实现。
Teo 服务器核心是用 Rust 编写的。它的性能优于 Java 和 Go。得益于 Teo 模式语言,开发 Teo 应用程序甚至比脚本语言更快。这使得 Teo 几乎成为 API 开发的完美选择。
流程抽象程度低
当 HTTP 请求到来时,开发人员编写代码来查找匹配的路由、验证参数、执行一些转换并设置一些默认值。然后代码将数据保存到数据库中。之后,代码可能会执行一些工作,例如发送电子邮件或通过消息队列启动某些服务。这就是 HTTP 请求的处理方式。这个过程可以被抽象并重用。然而,即使是像 Ruby on Rails 和 Django 这样的庞大框架也无法为您处理这个问题。
Teo 将其抽象为对象修改。假设您想在创建新用户时发送电子邮件。但是批量创建用户怎么样?使用 Teo,您可以在模型@afterSave上编写一个回调User。 createMany触发操作时,会自动为每个用户调用此回调。您甚至不需要添加另一个函数处理程序或移出那些电子邮件发送代码。
中等学习曲线
HTTP 框架很简单,只需声明一个路由即可。如何处理和读取每个请求取决于每个框架的实现方式。将数据从请求传递到底层 ORM 需要付出努力。错误很难处理。
好吧,开发人员不需要用 Teo 来处理这些繁琐的事情。 Teo HTTP 请求的约定干净、整洁、合理。使用 Teo,开发人员只关心模型、数据和业务逻辑。这些模型和逻辑对于每个项目都是独特的。
其他 ORM 或查询生成器的问题
简单的 CRUD 操作因查询构建器而变得复杂。传统 ORM 的聚合很复杂。开发人员仍然需要学习他们的 API 才能完成一些简单的事情。当开发人员打字时,他们提供一定程度的智能,但不会自动完成如何组织函数调用以完成开发人员的工作。开发人员需要在他们的文档中进行搜索。
总结起来,问题如下:
- 难以使用和理解
- 发展速度慢
- 始终搜索他们的文档以简单地完成事情
- 复杂使用的限制
- 难以维护生产代码
其他查询语言的问题
HTTP 请求的高级抽象是查询语言。查询语言定义了如何发送请求和获取响应的标准,而不是每个服务器都有自己的方式。GraphQL 就是其中之一,而且很受欢迎。我们使用 GraphQL 作为其他查询语言的示例。
服务器端代码很难写
GraphQL 不实现服务器。这只是一个标准。相反,开发人员需要遵循其标准来使用社区库来实现服务器。社区实现的库和插件在质量和可维护性方面有所不同。开发人员需要选择并将它们组织到自己的项目中。
Teo 为您实现服务器。因此,您无需担心如何组织和架构服务器。您只需在架构文件、字段和回调中声明与交易和业务核心相关的模型。
性能问题
当请求嵌套太多级别时,GraphQL 会出现性能问题。它分别将每个关系获取到数据库。大多数情况下,GraphQL 的字段选择并不是真正的字段选择。数据库查询仍然获取每个字段。
Teo 设法在对底层数据库的单个查询中获取所请求的资源。它的性能非常出色。
前端代码很难写
使用 GraphQL,前端开发人员需要创建大量查询文件和字符串才能执行请求。写起来难,用起来也难。
使用 Teo,您可以选择任何字段并包含任何关系,就像 GraphQL 一样,但使用纯 JSON 请求。不需要前端查询构建器。它易于编写且易于调试。
Teo 有限制吗?
Teo 是一个 Web 服务器,而不是 ORM 映射器。使用 Teo,您可以进行输入清理、验证和转换。您可以控制哪个字段可以被哪个字段查看或查询。您可以定义 CRUD 操作的权限规则。Teo 支持管道、自定义 URL 前缀、操作禁用和用户会话。
加入我们的社区并与我们联系。如果现有功能不能满足您的需求,请告诉我们。