契约优先、默认安全的 TypeScript REST API,为 AI 辅助开发团队打造
DaloyJS 自带默认安全配置,在生产环境中遇到已知的错误配置会拒绝启动,零运行时依赖,并拥有经过加固、带来源证明签名的发布流程。没有任何框架能让应用绝对安全,也无法阻止所有供应链攻击,所以文档会写清楚哪些默认开启、哪些需要你自己开启,以及还剩哪些风险。
入门、教程及路由、校验、错误、OpenAPI、类型化客户端、安全等核心指南已有中文版;其余文档和博客仍为英文。
$ pnpm create daloy@latest my-api- 3000 多个框架测试全部通过
- 覆盖率门槛:行和函数 ≥90%,分支 ≥92%
- 0 个运行时依赖
- Node 24 LTS、Node 26+、Bun、Deno、Cloudflare
- MIT 许可证
安全与供应链
默认安全:AI 生成代码的防护层
当代码由 AI 模型生成时,开发者的打字速度已不再是瓶颈,真正关键的是运行时安全和供应链完整性。DaloyJS 在运行时层面强制执行防护措施:请求体大小限制、超时、防原型污染、5xx 错误细节脱敏,以及启动时拒绝错误配置,而且没有可供利用的传递依赖。
默认安全的运行时配置
零运行时依赖
经过供应链加固的项目模板
为 AI 而生的项目模板
流式传输与可观测性
跨运行时移植
以契约优先为设计原则
Hey API 类型化客户端
开箱即用
基准测试与性能
数字,以及附带的注意事项
当 AI 智能体循环调用工具、以高并发发送请求时,吞吐量和冷启动延迟就变得至关重要。DaloyJS 默认开启安全检查,这些基准测试衡量的正是所有防护都开启时的性能。
DaloyJS 的表现如何
安装的传递依赖数量
安装时拉进来的每一个包,都是需要有人信任的攻击面。只有 DaloyJS 和 Hono 两者不引入任何传递依赖。
这对你意味着什么: 需要信任的包越少,CVE 越少,也不会冒出意料之外的 postinstall 脚本。零依赖意味着框架本身不会在供应链上开出新的口子;其余依赖树仍然需要你自己审查。
结论: DaloyJS 安装 0 个传递依赖,与 Hono 并列供应链攻击面最小;而一个安全配置的 NestJS 应用会带进 86 个。
Apple M3 Max · 16 cores · Node v26.4.0 · 2026 年 10 月 · @daloyjs/core 1.5.4 · 源码位于 bench/cross-framework
为什么这不是同类比较
- 苹果对橙子,而不是同类比较。这些工具不同,做的工作量也不同。每个请求中,DaloyJS 都会按你的 Zod 或 Valibot schema 校验请求体,并开箱即用地执行安全响应头、请求 ID、请求体大小限制和请求超时。其他框架的“最小配置”应用几乎都不做这些事,即便“安全对等”配置也很少能逐项对齐。所以 DaloyJS 的每个数字里,都有一部分是你原本需要自己实现的安全与校验工作。
- 体积的统计方式不同:DaloyJS 是一个零依赖的单独包,而其他框架需要解析传递依赖树,其确切大小取决于 lockfile 生成的时间。
- 吞吐量取决于负载形态:在双方中间件栈相当的情况下,DaloyJS 在这些 GET 路由上领先 Hono 约 27%,在带请求体的 POST 路由上领先约 58%,而且 DaloyJS 还额外用 Zod 校验了请求体。真实服务通常受限于数据库和 I/O 时间,而不是框架的分发开销,所以这些微观数字很少能预测生产环境的表现。
- 目标运行时不同:有些框架(例如 Elysia)针对 Bun 做了优化,但这里为了获得公平的单一运行时基线,统一用它们的 Node 适配器测量。
- 单台机器、单一时刻:一台 Apple M3 Max,Node v26.4.0,2026 年 10 月,@daloyjs/core 1.5.4,机器上还有其他后台负载(两个框架是先后连续测量的,因此相对比较比绝对数值更可靠)。你的硬件、运行时和版本都会改变这些数字。
为机器而生:面向 AI 智能体和工具
DaloyJS 已支持 MCP
Model Context Protocol(MCP)是 Claude、Cursor 和 VS Code 等 AI 智能体用来调用工具、阅读文档的开放标准。DaloyJS 两端都支持:你的应用可以成为 MCP 服务器,而本站文档(英文)本身就是一个 MCP 服务器。
把你的 API 变成 MCP 服务器
DaloyJS 只用 @daloyjs/core 就能构建 MCP 服务器,无需 SDK:Streamable HTTP 传输、输入 schema 校验,以及一项生产环境启动保护:如果 MCP 端点的处理链中没有认证 hook,就拒绝启动。它检查的是 hook 是否存在,以及在生产环境中是否对每个请求都执行过,而不检查它是否真的拒绝了谁,所以也请测试你的认证逻辑。
通过 MCP 阅读本站文档
一个公开、只读的端点,你的 AI 编程助手可以直接搜索和阅读,无需复制粘贴,也不需要 API 密钥。
端点
https://daloyjs.dev/mcpsearch_docs在所有文档页面中按关键词搜索,并按相关性排序。get_doc按路由或 slug 读取某个页面的全文。list_docs一次调用即可浏览所有可用的文档页面。
添加到你的 MCP 客户端配置中
使用仅支持 stdio 的客户端?可以这样桥接: npx -y mcp-remote https://daloyjs.dev/mcp.
限定影响范围
契约是安全边界,而不是装饰性语法
在以 AI 为先的工作流中,契约不是给人看的审美点缀,而是由机器强制执行的边界,防止幻觉出来的数据结构在组件之间泄漏。一份路由契约会严格校验请求、约束响应内容,并实时生成 OpenAPI 3.1 规范和类型化客户端。
Scalar API 参考,一行搞定
Scalar 是 Swagger UI 的现代继任者:快速、简洁、原生支持深色模式,并内置在线调试请求。在 DaloyJS 中,它是默认的文档界面,而不是插件:在 App 构造函数中设置 docs: true,就会自动在 /docs 挂载这个页面,并在 /openapi.json 提供实时的 OpenAPI 3.1 规范。
根据你的路由契约自动生成,无需额外代码。更喜欢 Swagger UI 或 Redoc?改一个配置字段即可。 OpenAPI 与文档界面指南 →
生态取舍
汲取各家所长,减少取舍
DaloyJS 并不想只在某一项上胜出,而是想省掉开发者在各种好点子之间写胶水代码的工作。
为你构建的应用提供可移植的供应链加固
加固的 pnpm 安装配置、来源已校验的 lockfile、SBOM + npm 来源证明
适配 serverless / 边缘环境
基于 Web 标准的核心,多运行时适配器
成熟的 Node 运维能力与文档
封装的插件、结构化日志、优雅停机
现代的 TS 优先开发体验,支持 Bun
端到端类型化的处理函数、上下文和客户端
最好用的 OpenAPI 体验
从一份路由定义内置生成 OpenAPI 3.1
最好的类型化客户端代码生成
pnpm gen → 完全类型化的 fetch SDK
准备好以默认安全的方式交付了吗?
几秒钟就能创建项目:为你的包管理器加固安装配置,生成会拦截安装脚本的 CI,固定版本的 GitHub Actions、Dependabot、CODEOWNERS 以及 lockfile 来源校验。随着应用增长,契约始终保持一致,同一个应用可以运行在 Node、Bun、Deno 和 Cloudflare Workers 上。