Оглавление
Hono
Лёгкий и быстрый веб-фреймворк на веб-стандартах: работает в Node.js, Bun, Deno и Cloudflare Workers.
1.Начало работы
- Что такое HonoЗачем нужен Hono, что такое веб-стандарты Request и Response и на каких платформах он работает.
- Создание проектаКак создать проект Hono командой npm create hono и что лежит в его папках.
- Первое приложениеИз чего состоит файл src/index.ts, как Hono запускается на Node.js и как вернуть первый JSON.
2.Маршруты и запросы
- Маршруты и HTTP-методыКак связать адрес и HTTP-метод с обработчиком: app.get, app.post, app.put, app.delete и app.on.
- Параметры адреса и строка запросаКак прочитать часть адреса через c.req.param() и параметры после знака вопроса через c.req.query().
- Объект ContextЧто лежит в объекте c: данные запроса в c.req и методы ответа c.json, c.text, c.html, c.redirect, c.status и c.header.
- Тело запросаКак прочитать JSON, данные формы и текст из тела запроса: c.req.json(), c.req.parseBody() и c.req.formData().
- Группы маршрутов и отдельные файлыКак вынести маршруты статей в отдельный файл и подключить их через app.route() и basePath().
3.Middleware и проверка данных
- MiddlewareЧто такое middleware в Hono, как работает await next() и как написать своё middleware с createMiddleware.
- Встроенные middlewareГотовые middleware Hono: logger, cors, secureHeaders, etag и basicAuth — что делает каждое и как подключить.
- Проверка данных с zodКак проверить тело запроса, параметры и query схемой zod через middleware zValidator и получить данные с готовыми типами.
- Обработка ошибокКак ответить на неизвестный адрес через app.notFound(), перехватить ошибки через app.onError() и прервать запрос исключением HTTPException.
- Переменные окружения и bindingsГде хранить секреты и настройки, как загрузить файл .env в Node.js и как читать переменные через env() и c.env.
4.Страницы и данные
- HTML на JSXКак собирать HTML-страницы на встроенном JSX Hono: файлы .tsx, компоненты, props и списки.
- Общий макет страницКак вынести общую разметку в компонент Layout с children и подключить её ко всем страницам через jsxRenderer и c.render().
- База данных SQLiteКак подключить SQLite к приложению Hono на Node.js через better-sqlite3: файл базы, таблицы и запросы.
- CRUD API статейПолный набор маршрутов для статей блога: список, просмотр, создание, изменение и удаление с проверкой zod и базой SQLite.
5.Пользователи
6.Дальше
- RPC-клиент hcКак экспортировать тип приложения и вызывать API из TypeScript-кода через клиент hc с подсказками адресов, параметров и ответов.
- Тесты с app.request()Как проверять маршруты Hono без запуска сервера: app.request(), Vitest и отдельная база для тестов.
- Развёртывание: Node.js, Bun, Deno, Cloudflare WorkersКак запустить приложение Hono в рабочем режиме на Node.js и чем отличается запуск на Bun, Deno и Cloudflare Workers.