@carlos-tzin/tzin

中文文档
1.0.8发布于 2026/10/01MITTypeScriptES Module近 30 天下载 2323

合同第一类型脚本框架. 类型大小,有存在的实时通道,以及每个API的MCP服务器.

中文使用文档
文档目录24 节
  1. 文档
  2. 为什么是另一个框架?
  3. 特征
  4. 核心
  5. 运行时间
  6. 实时
  7. 大赦国际
  8. 数据库
  9. 认证
  10. 工作
  11. 日志
  12. 测试
  13. 快速启动
  14. 1. 脚手架
  15. 2. 合同的定义
  16. 3. 创建应用程序
  17. 4. 运行
  18. 国 际
  19. 基准
  20. 运行时间吞吐量
  21. 实例
  22. 设计原则
  23. 发展
  24. 许可证

锡因

合同第一类型脚本框架. 类型,比例。 实时建造. 从第一天开始的人工智能.

tzin - 来自纳瓦特尔 - t一个值得珍视和爱戴的荣誉后缀. 客户端和服务器之间的契约,声明一次.

CI npm Donate Buy Me A Coffee

状况:稳定(1.0.x). 核心工程端到端(见 基准(三); 1.0.0 运出稳定的API,1.0.2 增加测试覆盖门,一个更大的CI 矩阵和一个公共类型清洁的表面.

npm install @carlos-tzin/tzin

或者脚手架 一个新的项目:

npx create-tzin my-app

文档

托管网站 : tzin.tzinny.com (中文(简体) )

  • API 参考 - 所有出口、类型和选择
  • 架构指南 - 请求管道、设计决定、内部
  • 部署指南 ——多克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克
  • 路线图 ——未来特色

为什么是另一个框架?

TypeScript后端的地平面很拥挤

差距证据
规模的推论类型崩溃霍诺问题 #2399号, (中文(简体) ), 3869号; 链路构建者强制每个应用程序一个巨大的表达式
轻量级框架中没有结构霍诺问题 4121号
TS 中不存在提取器只有Rust的 Axum 才对处理器输入
OpenAPI 是一个螺栓每个 TS 框架在运行时或通过代码源将自己的chema DSL 翻译为 JSON Schema
AI 本地工具链一个框架运送一个MCP服务器;窗口正在关闭

tzin的回答是: 宣布合同一次免费得到其他一切.

import { t } from '@carlos-tzin/tzin'
import { contract, impl, createApp, listen } from '@carlos-tzin/tzin'

const getUser = contract({
  method: 'GET',
  path: '/users/:id',
  params: t.Object({ id: t.String() }),
  responses: {
    200: t.Object({ id: t.String(), name: t.String(), tags: t.Array(t.String()) }),
    404: t.Object({ error: t.String() }),
  },
})

export const getUserRoute = impl(getUser, async ({ params }) => {
  const user = await findUser(params.id)
  if (!user) throw new HttpError(404, 'user not found')
  return { status: 200, body: user }
})

const app = createApp([getUserRoute])
listen(app, 3000)

从该单项宣言:

  • 处理器输入被取出, 未猜测数字 : { params } 存在是因为您声明 它; 添加 query, (中文(简体) ), body, (中文(简体) ), headers 或者说 cookies 对合同,他们似乎, 每个请求都打入并经过验证.
  • 编译器执行您的回复:返回一个不匹配的形状 已声明 200 身体是一个类型错误。 丢弃 HttpError地图到他们的状态.
  • OpenAPI 3.1 免费合同是JSON Schema(TypeBox),所以 generateOpenApi(routes) 不需要翻译层.

特征

核心

特性导入说明
合同@carlos-tzin/tzin安全型API合同
路线@carlos-tzin/tzin与管理人员订立合同
中间软件@carlos-tzin/tzin洋葱型中相软件
编@carlos-tzin/tzin类型依赖性注射

运行时间

特性导入说明
节点服务器@carlos-tzin/tzinlisten(app, port)
Bun 服务器@carlos-tzin/tzinserveBun(app, port)
工人@carlos-tzin/tzintoWorker(app)
Dev 服务器国 际tzin dev 热重装

实时

特性导入说明
频道@carlos-tzin/tzinSSE + POST 频道
出席情况@carlos-tzin/tzin凤凰式存在
网络安全套@carlos-tzin/tzin/ws本地 WS 频道
浏览器客户端@carlos-tzin/tzin/client-browser0dep 浏览器客户端

大赦国际

特性导入说明
MCP 服务器@carlos-tzin/tzin可流性 HTTP + stdio
打开API@carlos-tzin/tzin合同自动生成
法学硕士.txt@carlos-tzin/tzin可读 API 索引

数据库

特性导入说明
模型@carlos-tzin/tzin/db类型安全ORM
查询构建器@carlos-tzin/tzin/db可链条查询
存储适配器@carlos-tzin/tzin/db可移动后端

认证

特性导入说明
持有者认证@carlos-tzin/tzin/authJWT 验证
可选认证@carlos-tzin/tzin/auth非限制性 JWT
API 密钥@carlos-tzin/tzin/auth基于信头的认证
JWT 倾斜@carlos-tzin/tzin/auth签名/核查

工作

特性导入说明
定义工作@carlos-tzin/tzin/jobs背景任务
队列@carlos-tzin/tzin/jobs任务队列
重试@carlos-tzin/tzin/jobs失败时自动重试

日志

特性导入说明
锁定器@carlos-tzin/tzin/log结构化伐木
儿童伐木工@carlos-tzin/tzin/log范围上下文
美丽/JSON@carlos-tzin/tzin/log可配置输出

测试

特性导入说明
测试客户端@carlos-tzin/tzin/testAPI 测试
Schema 验证@carlos-tzin/tzin/test类型断言
模拟数据@carlos-tzin/tzin/test生成模拟

快速启动

1. 脚手架

npx create-tzin my-api
cd my-api

2. 合同的定义

// src/routes/users.ts
import { t, contract, impl } from '@carlos-tzin/tzin'

export const getUser = contract({
  method: 'GET',
  path: '/users/:id',
  params: t.Object({ id: t.String() }),
  responses: {
    200: t.Object({ id: t.String(), name: t.String() }),
    404: t.Object({ error: t.String() }),
  },
})

export const getUserRoute = impl(getUser, async ({ params }) => {
  return { status: 200, body: { id: params.id, name: 'Ada' } }
})

3. 创建应用程序

// src/app.ts
import { createApp } from '@carlos-tzin/tzin'
import { getUserRoute } from './routes/users.js'

export const app = createApp([getUserRoute], {
  openapi: true,
  mcp: true,
  meta: { title: 'My API', version: '1.0.0' },
})

4. 运行

npm run dev    # tzin dev  -> dev server at http://localhost:3000
npm run build  # tzin build -> production build

这个 tzin 带包裹的二进制飞船,所以这些脚本在之后工作 npm install没有 本地安装, 通过 npm exec 运行 :

npx --package @carlos-tzin/tzin tzin dev

国 际

tzin dev [--port N]                                # dev server with hot reload
tzin build                                         # build for production
tzin deploy --target node|workers [--pack] [--docker <tag> [--push]]  # deploy
tzin generate route <name>                         # scaffold a route
tzin generate middleware <name>                    # scaffold middleware
tzin generate test <name>                          # scaffold a test

基准

100个有不同计划的最终点,由 tsc --extendedDiagnostics数字 :

N路线tzin:类型Hono: 类型tzin:即时处理霍诺:即时报道
20国4 851个72 368 (中文(简体) )22 472个156 054 (中文(简体) )
100个15 779个111,952 (中文(简体) )93,128 (中文(简体) )240k (韩语)
三百块43 099 (中文(简体) )210 912 (中文(简体) )270k (韩语)590k (中文(简体) )

天津生长 严格线性 (~130个类型/端点.

运行时间吞吐量

框架数第99页
原始节点:http(地板)~42k (韩语)2 -- 3ms (2 -- 3ms)
哈诺~34–36k (英语)3分钟
锡因~30–31k (英语)6分钟
表达式~ 15k 时7分钟

实例

示例运行时间显示什么
examples/node-demo.ts节点有合同的最小 HTTP 服务器
examples/bun-demo.ts阿宝Bun.serve 有验证功能
examples/todo-api.ts节点完整 CRUD: 认证中间软件, DI, OpenAPI, MCP
examples/mcp-demo.ts节点通过 stdio 的 MCP 服务器
examples/ws-demo.ts阿宝有存在的 WebSocket 频道
examples/workers-quickstart/工人复制- paste wrangler 项目: DO + 通道 + 存在
examples/workers-quickstart.md工人相同的项目, 按文件解释

设计原则

  • 合同第一,统一登记. 一条路由是数据(contract({...})链接 在建造链。 推论成本保持每个终点的O(1).
  • JSON斯克马本地人. TypeBox schemas 二相为OpenAPI,零转换.
  • 网络标准运行时间. Request 内, Response 退出;适配器保持瘦弱.
  • 解开者战胜魔法. 交易员得到的正是合同申报的内容.
  • 错误是控制流 . 丢入打出的错误; 响应联盟已经知道 .
  • Light DI 不举行仪式. provide(key, value) 在应用级种子类型中 每个请求的上下文中的单通数——处理者 ctx.require(db)。 。 。 .

发展

npm install
npm test          # vitest — runtime + end-to-end client + type assertions
npm run typecheck # strict tsc across src/test/bench fixtures

许可证

麻省理工学院——见 自由主义。 。 。 .

版本与发布记录

@carlos-tzin/tzin 共发布 21 个版本,首次发布于 2026/08/26;过去 12 个月发布了 21 个版本。

版本发布日期距今
1.0.8latest2026/10/011 个月前
1.0.72026/10/011 个月前
1.0.62026/09/221 个月前
1.0.52026/09/221 个月前
1.0.42026/09/151 个月前
1.0.32026/09/151 个月前

关于 @carlos-tzin/tzin 的常见问题

@carlos-tzin/tzin 是什么?

合同第一类型脚本框架. 类型大小,有存在的实时通道,以及每个API的MCP服务器.

如何安装 @carlos-tzin/tzin?

在项目目录运行 npm install @carlos-tzin/tzin,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 tzin,可以用 npx tzin 直接运行。

@carlos-tzin/tzin 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@carlos-tzin/tzin 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@carlos-tzin/tzin 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@carlos-tzin/tzin 可以商用吗?

@carlos-tzin/tzin 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@carlos-tzin/tzin 的下载量有多少?

根据 npm 官方下载统计,@carlos-tzin/tzin 在 2026/10/09 – 2026/11/07 这 30 天内被下载 2,323 次,日均约 77 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@carlos-tzin/tzin 还在维护吗?

最新版本 1.0.8 发布于 2026/10/01(1 个月前);至今共发布 21 个版本,其中过去 12 个月发布了 21 个;首次发布于 2026/08/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。