@asenajs/hono-adapter

中文文档
5.0.2发布于 2026/10/31MITTypeScriptESM + CJS构建来源已验证

Hono服务器和用于Asenajs的websocket适配器

中文使用文档
文档目录14 节
  1. 功能
  2. 要求
  3. 安装
  4. 使用
  5. 服务器设置(index.ts)
  6. 控制器的例子
  7. API文档
  8. createHonoAdapter(记录器、期权)
  9. 测试
  10. 运行测试
  11. 测试结构
  12. 编写测试
  13. 开发
  14. 许可证

Asena Hono适配器

Version Bun Version

基于Hono web框架的Asena.js的HTTP和WebSocket适配器实现。

功能

  • 快速和现代的API端点 Hono web框架
  • 高性能与Bun运行时
  • TypeScript的完整类型支持
  • HTTP和WebSocket适配器支持
  • 易于集成和使用
  • Zod的验证支持
  • 基于控制器的路由的装饰器

请求管道顺序:全局中间件→路由中间件→验证器→处理程序。

要求

  • 包子 V1.4或更高版本
  • @asenajs / asena V0.12.0或更高版本(对等依赖)
  • Hono V4.12.9或更高版本(对等依赖)
  • 萨德 V4.3.6或更高版本(对等依赖)
  • TypeScript v5.8.2或更高版本

安装

bun add @asenajs/hono-adapter hono zod

hono 和 zod 是 同行依赖性 -此适配器提供包装器,您的项目拥有 它包装的库。这就是将您的代码和适配器保存在单个副本上的原因 hono;两个 拷贝意味着两个 HTTPException 类,并且从错误的类抛出一个故意的403得到回答 500.

包管理器命令
Bun, NPM 7+, PNPM 8+bun add hono zod -对等体自动安装,但无论如何声明它们,以便它们在干净安装中存活
纱1yarn add hono zod - - - - - - 要求, yarn 1不为您安装peers

使用

服务器设置(index.ts)

import { AsenaServer } from '@asenajs/asena';
import { DefaultLogger } from "@asenajs/asena/logger";
import { createHonoAdapter } from '@asenajs/hono-adapter';

const [adapter, logger] = createHonoAdapter(new DefaultLogger());

await new AsenaServer(adapter)
  .logger(logger)
  .port(3000)
  .start(true);

控制器的例子

import { Controller } from '@asenajs/asena/decorators';
import { Get } from '@asenajs/asena/decorators/http';
import type { Context } from '@asenajs/hono-adapter';

@Controller()
export class TestController {
  @Get("/")
  public async me(context: Context) {
    return context.send("Hello World!");
  }
}

API文档

createHonoAdapter(记录器、期权)

用于创建Hono适配器的辅助函数。

参数:

  • logger (Logger):来自Asena的Logger实例

返回:

  • 带有[adapter, logger]的元组

测试

Asena Hono适配器使用Bun的内置测试框架进行单元和集成测试。

运行测试

# Run all tests
bun test

# Run tests with watch mode
bun test:watch

# Run tests with coverage report
bun test:coverage

测试结构

  • 单元测试:单独测试各个组件

    • HonoAdapter.test.ts -测试HTTP适配器
    • HonoContextWrapper.test.ts -测试上下文包装器
    • HonoWebsocketAdapter.test.ts -测试WebSocket适配器
  • 集成测试:测试组件如何协同工作

    • integration.test.ts -适配器的端到端测试

编写测试

测试控制器的示例:

import { describe, expect, it } from "bun:test";
import { AsenaServer } from "@asenajs/asena";
import { createHonoAdapter } from "@asenajs/hono-adapter";
import { DefaultLogger } from "@asenajs/asena/logger";
import { YourController } from "../path/to/your/controller";

describe("YourController", () => {
  let server;
  let baseUrl;
  
  beforeEach(async () => {
    // 10000-31999: below the kernel's ephemeral floor (net.ipv4.ip_local_port_range,
    // 32768-60999). A server port drawn from that range collides with the outbound
    // sockets the suite itself holds open - TIME_WAIT included - and Bun.serve then
    // fails with EADDRINUSE, randomly, in whichever test happened to draw it.
    const port = 10000 + Math.floor(Math.random() * 22000);
    const [adapter, logger] = createHonoAdapter(new DefaultLogger());
    const app = new AsenaServer(adapter).logger(logger).port(port);
    
    app.register(YourController);
    
    server = await app.start();
    baseUrl = `http://localhost:${port}`;
  });
  
  afterEach(() => {
    server.stop();
  });
  
  it("should respond correctly", async () => {
    const response = await fetch(`${baseUrl}/your-endpoint`);
    const data = await response.json();
    
    expect(response.status).toBe(200);
    expect(data).toEqual({ /* expected response */ });
  });
});

开发

以开发模式运行项目:

bun run build

许可证

本项目使用麻省理工学院许可协议。看到 许可证 文件查看详细信息。

版本与发布记录

@asenajs/hono-adapter 共发布 17 个版本,首次发布于 2025/03/28;过去 12 个月发布了 12 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
5.0.2latest2026/10/312 天前
5.0.12026/10/312 天前
5.0.02026/10/312 天前
4.0.02026/08/262 个月前
3.2.02026/08/202 个月前
3.1.02026/08/172 个月前

关于 @asenajs/hono-adapter 的常见问题

@asenajs/hono-adapter 是什么?

Hono服务器和用于Asenajs的websocket适配器

如何安装 @asenajs/hono-adapter?

在项目目录运行 npm install @asenajs/hono-adapter,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:zod(^4.3.6)、hono(>=4.12.9)、typescript(^5.8.2)、@asenajs/asena(^0.12.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@asenajs/hono-adapter 支持 TypeScript 吗?

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

@asenajs/hono-adapter 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@asenajs/hono-adapter 可以商用吗?

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

@asenajs/hono-adapter 还在维护吗?

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