Hono — это облегченная веб-инфраструктура, которая выполняет пограничные среды, такие как Cloudflare Workers и Bun, Deno и Node.js. Он поставляется со встроенной поддержкой TypeScript, не зависит от внешних зависимостей и использует технику «умной маршрутизации», которая обещает «сверхбыструю» производительность на всех платформах.

Что такое Хоно

Hono рекламируется как сверхбыстрая веб-инфраструктура, которую можно развернуть на периферии и во всех основных средах JavaScript. Разработчики Hono на своей официальной странице сообщают, что:

Hono —[炎] означает пламя🔥 на японском языке— это небольшая, простая и сверхбыстрая веб-платформа для Cloudflare Workers, Deno, Bun и других.

Особенности Хоно

Hono предоставляет разработчикам 5 функций, которые помогут сделать веб-разработку простой и эффективной, обеспечивая при этом высокие стандарты производительности:

  • Hono работает очень быстро благодаря технологии умной маршрутизации, которая автоматически выбирает лучший алгоритм маршрутизации по запросу.
  • Hono не имеет никаких зависимостей, поскольку использует Web Standard API для работы в сети и связи по протоколу HTTP.
  • Hono имеет встроенное ПО промежуточного слоя для повторяющихся задач, таких как аутентификация, CORS, кеширование, сжатие, сервер GraphQL и многие другие.
  • Hono имеет первоклассную поддержку TypeScript для улучшения опыта разработчиков.
  • Hono может выполняться на нескольких платформах JavaScript с одним и тем же кодом.

Развитие в Хоно

API Hono кажется очень похожим на широко известный Express.js. Однако обратные вызовы маршрута получают объект Context, который выполняет действия как с данными запроса, так и с данными ответа.

Чтобы запустить Hono на Bun.js:

bun add hono

Затем создайте index.ts со следующим кодом:

import { Hono } from 'hono'
​
const app = new Hono();
​
app.get('/', (c) => c.text('Hello from Hono!'))

и запустите:

bun ./index.ts

Для запуска Hono на Node.js требуется дополнительная зависимость @honojs/node-server, которая служит адаптером для обслуживания приложения.

Чтобы запустить Hono на Node.js:

npm i --save hono @honojs/node-server typescript
# or
yarn add hono @honojs/node-server typescript

Затем создайте index.ts со следующим кодом:

import { serve } from '@honojs/node-server'
import { Hono } from 'hono'
​
const app = new Hono();
​
app.get('/', (c) => c.text('Hello from Hono!'))
​
serve(app)

и запустите его, либо скомпилировав index.ts :

npx tsc .
node ./index.js

или используя ts-node:

## install ts-node
npm i ts-node --save-dev
# or
yarn add -D ts-node
​
## run the server
ts-node ./index.ts

Ориентиры Хоно

Согласно официальным тестам, выполненным создателями Hono (Общедоступный исходный код), видно, что Hono превосходит большинство широко используемых веб-фреймворков, совместимых с периферией, таких как fast, faster и opine от Deno.

На воркерах Cloudflare

Исходный код: benchmarks/handle-event

На Дено

Исходный код: benchmarks/deno

На булочке

Исходный код: SaltyAom/bun-http-framework-benchmark

Заключение

Hono — многообещающий веб-фреймворк для периферии, обеспечивающий достойную производительность без ущерба для опыта разработчиков. Он имеет API, похожий на широко распространенный express.js, с промежуточным программным обеспечением, которое охватывает большинство типичных вариантов использования, таких как аутентификация и проверка.

Вопрос о том, станет ли Hono де-факто фреймворком для пограничных веб-серверов, остается спорным. Однако, учитывая его производительность и простоту использования, вполне возможно, что Hono останется устойчивым и получит значительную долю развертываний в граничных средах, особенно для Cloudflare Workers.