Deno 基准测试中的 Hono:零依赖、双路由引擎的超快 Web 框架

发布时间:2026/9/7 4:04:44
Deno 基准测试中的 Hono:零依赖、双路由引擎的超快 Web 框架 Deno 基准测试中的 Hono零依赖、双路由引擎的超快 Web 框架【免费下载链接】denoA modern runtime for JavaScript and TypeScript.项目地址: https://gitcode.com/GitHub_Trending/de/deno本文以 Deno 仓库中随基准测试数据一同维护的 Hono README 为核心梳理 Hono 这一 Web 框架的设计定位、双路由架构、内置中间件导出体系以及它在 Deno 基准测试体系中的角色。读完你可以掌握 Hono 的最小可运行应用写法、两套路由器的取舍依据以及如何从 package.json 的 exports 映射理解其模块组织方式。Hono 在 Deno 仓库中的位置npm 基准测试数据Hono日语炎意为火焰是一个面向 Cloudflare Workers、Deno、Bun 等多平台的小而快的 Web 框架。当前仓库将其 vendored内嵌在tests/bench/testdata/npm/hono/目录下目录内容包含README.md —— 框架说明文档本文主体来源package.json —— 完整发布元数据含 exports 子路径映射LICENSE —— MIT 许可证dist/—— 构建产物含hono.js、compose.js、context.js、request.js以及middleware/、router/、utils/子目录。从目录结构看该目录位于 Deno 基准测试tests/bench/README.md 描述的cargo bench --bench deno_bench体系的testdata/npm之下可以推断其用途之一是为验证 npm 生态包在 Deno 中的解析与运行提供稳定的测试数据。这也正是本文以它为主线介绍 Hono 的原因README 与真实的 dist 产物相互印证便于把文档描述落到实现证据上。五分钟上手最小可运行应用README 给出的最小示例完整如下它展示了 Hono 的核心 API 形态——实例化Hono、注册路由、处理器直接返回响应import { Hono } from hono const app new Hono() app.get(/, (c) c.text(Hono!!)) export default app几个值得注意的细节处理器签名是(c) ...其中c是 Context 对象对应 package.json 中dist/context.js与类型声明dist/context.d.ts通过c.text()、c.json()等方法直接构造响应export default app的写法与 Service Worker 运行时的入口约定一致这正是 Hono 零依赖、仅用 Web 标准 API 设计取向的体现package.json 的scripts中包含test:deno: deno test --allow-read deno_test与denoify生成 Deno 分发的deno_dist目录说明官方发布流程本身就把 Deno 作为一等目标平台。核心特性README 的五条主张README 的 Features 章节列出了 Hono 的五个核心主张逐条来看其在仓库文件中的对应证据Ultrafast超快——路由器不使用线性循环。dist 目录中存在两个独立的 router 实现dist/router/trie-router/与dist/router/reg-exp-router/均包含router.js、node.js、trie.js等文件。前者基于前缀树Trie做逐段匹配后者把路由编译为正则表达式两者都避免了遍历全部路由逐条比对的线性扫描。Zero-dependencies零依赖——仅使用 Service Worker 与 Web 标准 API。package.json 中没有任何dependencies字段只有devDependenciesjest、eslint、typescript、denoify 等构建工具与运行期零依赖的说法吻合。Middleware中间件——内置、自定义、第三方三级支持。dist 下的middleware/目录与 exports 映射见下文列出了十余个官方内置中间件dist/compose.js则承担中间件链的组合执行逻辑其类型声明引用了hono.d.ts中的ErrorHandler与NotFoundHandler。TypeScript——一等公民。每个 JS 产物都伴随.d.ts声明文件如dist/hono.d.ts、dist/index.d.tsREADME 顶部的 npm types 徽章也强调类型定义随包发布。Multi-platform多平台——Cloudflare Workers、Fastly ComputeEdge、Deno、Bun 皆可运行。这一点在 package.json 的keywords含cloudflare、fastly、deno、bun和serve-static的三个变体导出通用版、serve-static.bun、serve-static.module中得到印证——静态文件中间件按运行平台拆分为不同入口。两套路由器Trie 与正则的基准对比README 内置了一段官方基准数据针对 Cloudflare Workers 场景的路由性能对比这是理解 Hono 路由设计的关键依据hono - trie-router(default) x 424,449 ops/sec ±4.98% (77 runs sampled) hono - regexp-router x 516,228 ops/sec ±4.79% (81 runs sampled) itty-router x 206,641 ops/sec ±3.59% (87 runs sampled) sunder x 319,500 ops/sec ±1.33% (93 runs sampled) worktop x 187,280 ops/sec ±3.09% (87 runs sampled) Fastest is hono - regexp-router解读要点默认路由是 trie-routerhono - trie-router(default)标注它在增量添加动态路由时开销低适合路由表频繁变化的场景regexp-router 吞吐更高516,228 ops/sec 对比 424,449 ops/sec代价是路由集合变更时需要重新编译正则适合路由固定的部署场景两者都显著快于 itty-router、sunder、worktop 等同期 Workers 路由器验证了不用线性循环这一设计主张。在 package.json 中这两套路由器通过子路径导出对外暴露./router/trie-router: ./dist/router/trie-router/index.js, ./router/reg-exp-router: ./dist/router/reg-exp-router/index.js类型声明同样按子路径映射typesVersions中将router/trie-router指向./dist/router/trie-router/router.d.ts保证 TypeScript 用户在两种选择下都能获得完整类型。使用时可在创建应用时通过new Hono({ router: RegExpRouter })之类的方式替换默认路由器此用法来自 Hono 官方文档README 本身仅给出默认形态。内置中间件与子路径导出exports 全解Hono 的 npm 包通过exports字段把十余个内置中间件与工具集暴露为子路径这也是 Deno npm 解析机制需要正确处理的典型案例条件导出 通配符 平台变体。package.json 的完整导出面如下子路径实际文件用途.dist/index.js框架主入口Hono类./basic-auth/./bearer-auth/./jwt对应dist/middleware/*/index.js认证类中间件./cachedist/middleware/cache/index.js缓存中间件./compressdist/middleware/compress/index.js响应压缩./corsdist/middleware/cors/index.js跨域处理./etag/./logger/./powered-by对应dist/middleware/*/index.js响应头 / 日志 / 签名./html/./jsx/./jsx/jsx-runtime/./jsx/jsx-dev-runtimedist/middleware/jsx/*HTML 与 JSX 渲染含 React 兼容的运行时入口./pretty-jsondist/middleware/pretty-json/index.jsJSON 美化输出./serve-staticdist/middleware/serve-static/index.js静态文件通用./serve-static.bun/./serve-static.modulebun.js/module.mjs静态文件的 Bun 专用与 ESM 模块变体./router/trie-router/./router/reg-exp-routerdist/router/*/index.js两套可替换路由器./utils/jwt/./utils/*dist/utils/*.jsJWT 工具与通配符导出的工具集cookie、crypto、filepath、body 等从 dist 目录实际文件看utils/下确实存在cookie.js、crypto.js、filepath.js、http-status.js、encode.js等模块与./utils/*通配导出相互对应。每个中间件的类型声明如dist/middleware/cors/index.d.ts都从../../hono导入Next类型说明中间件签名被统一约束为Handler形态这是自定义中间件与第三方中间件可无缝混用的结构基础。版本与环境v2.x 时代的 Deno 集成README 明确标注v2.x 已发布并附迁移指南入口当前 vendored 的 package.json 版本号为2.0.9与 v2 系列一致engines声明node 11.0.0即最低运行时约束在 Deno 中运行则不受该字段限制而是由 Deno 自身的 npm 兼容性支持README 顶部的 Deno 徽章指向deno.land/x/hono表明 Hono 同时以 Deno 官方模块注册表通过denoify脚本从同一份 TypeScript 源码生成deno_dist分发——同一套源码经denoify转换后同时服务 npm 与 Deno 两个生态。在 Deno 仓库中继续深入若想在 Deno 仓库内核实本文内容可按以下路径阅读框架说明与基准数据tests/bench/testdata/npm/hono/README.md导出映射与元数据tests/bench/testdata/npm/hono/package.json主类与组合逻辑tests/bench/testdata/npm/hono/dist/hono.js、tests/bench/testdata/npm/hono/dist/compose.js两套路由器实现tests/bench/testdata/npm/hono/dist/router/trie-router/router.js与tests/bench/testdata/npm/hono/dist/router/reg-exp-router/router.jsDeno 基准测试入口与过滤方式tests/bench/main.rs 与 tests/bench/README.md。【免费下载链接】denoA modern runtime for JavaScript and TypeScript.项目地址: https://gitcode.com/GitHub_Trending/de/deno创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻