0Pricing
React Academy · Урок

React на Cloudflare Workers с Hono

Настройте Cloudflare Worker с Hono и renderToReadableStream, чтобы отдавать страницы React с периферии

«React на Cloudflare Workers с Hono» — бесплатный урок React Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.

Что такое Hono

Hono — лёгкий и сверхбыстрый веб-фреймворк, предназначенный для работы в периферийных средах выполнения, включая Cloudflare Workers, Deno Deploy, Bun и Node.js. Его API вдохновлён Express, но создан с нуля на основе веб-стандартов (Fetch API, Request/Response), поэтому он естественно подходит для периферийных сред.

Создание Cloudflare Worker с Hono

Создать каркас нового проекта Hono для Cloudflare Workers несложно: команда npm create hono@latest предлагает выбрать шаблон, указать "cloudflare-workers" и создаёт проект с предварительно настроенными wrangler, CLI Cloudflare, и зависимостью Hono.

Добавление SSR для React

Чтобы выполнять серверный рендеринг React внутри Worker Hono, установите react, react-dom и @types/react, а затем импортируйте renderToReadableStream из react-dom/server. Эта функция является частью потокового API React 18 и предназначена для сред, поддерживающих API веб-потоков, — Cloudflare Workers поддерживает такой API.

Обработчик маршрута Hono

Типичный обработчик маршрута SSR вызывает renderToReadableStream с корневым компонентом React, ожидает получения потока, а затем использует c.body(stream, { headers: { 'Content-Type': 'text/html' } }) или c.html(htmlString), чтобы отправить ответ. Поток создаёт фрагменты HTML, которые браузер может постепенно отображать.

Тип возвращаемого значения renderToReadableStream

renderToReadableStream возвращает Promise, разрешающийся в ReadableStream с фрагментами HTML. Этот ReadableStream соответствует API веб-потоков и может быть напрямую передан как тело объекта Response, что идеально подходит для обработчика fetch в Cloudflare Workers.

Обёртывание в HTML-оболочку

Поток React создаёт HTML-дерево компонентов, но не окружающий документ. Необходимо встроить поток в HTML-оболочку: строку, содержащую объявление типа документа, элемент head с метатегами и ссылкой на CSS, открывающий тег body, затем поток React, а после него закрывающие теги body и html.

Предоставление статических ресурсов

Клиентский пакет React, созданный с помощью Vite, необходимо предоставлять вместе с Worker. Для этого можно использовать Cloudflare Pages или функцию Assets в Workers: c.env.ASSETS.fetch(request) направляет запросы ресурсов (JS, CSS, изображений) к статическим файлам, загруженным при развёртывании Worker.

Точка входа worker.js

Файл Worker, являющийся точкой входа, экспортирует объект по умолчанию с обработчиком fetch: export default { fetch: app.fetch }. Метод app.fetch Hono уже является совместимым обработчиком fetch: он получает Request и возвращает Response, поэтому напрямую подключается к среде выполнения Workers.

Локальная разработка с Wrangler

wrangler dev запускает локальный сервер разработки, эмулирующий среду выполнения Cloudflare Workers на Вашем компьютере. Он отслеживает изменения файлов и автоматически перезагружает приложение, обеспечивая быстрый цикл локальной разработки перед развёртыванием в рабочей среде.

Развёртывание в Cloudflare

wrangler deploy собирает и загружает код Worker в сеть Cloudflare, делая его доступным во всех более чем 300 периферийных местоположениях за несколько секунд. Файл конфигурации wrangler.toml задаёт ID аккаунта, имя Worker, а также привязки любого пространства имён KV или базы данных D1.

Гидратация с помощью bootstrapScripts

Для интерактивности на стороне клиента передайте bootstrapScripts: ['/assets/client.js'] в renderToReadableStream. React добавит в HTML тег script, который загружает клиентский пакет и вызывает hydrateRoot для DOM, отрендеренного на сервере, делая страницу интерактивной после загрузки JS.

Тип возвращаемого значения renderToReadableStream

Что возвращает renderToReadableStream?

Итоги урока

Hono предоставляет лёгкий HTTP-фреймворк, изначально предназначенный для периферийных сред, который хорошо интегрируется с renderToReadableStream React. Точка входа Worker напрямую экспортирует app.fetch в среду выполнения Workers, статические ресурсы предоставляются через привязки ASSETS, а wrangler отвечает и за локальную разработку, и за развёртывание в рабочей среде. bootstrapScripts связывает потоковый HTML с пакетом гидратации на стороне клиента.

Часто задаваемые вопросы

Урок «React на Cloudflare Workers с Hono» бесплатный?

Да — полный текст урока «React на Cloudflare Workers с Hono» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.

Чему я научусь в уроке «React на Cloudflare Workers с Hono»?

Настройте Cloudflare Worker с Hono и renderToReadableStream, чтобы отдавать страницы React с периферии Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать React Academy?

Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «React на Cloudflare Workers с Hono»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке React Academy?

Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что такое периферийный рендеринг и почему он важен
  2. React на Cloudflare Workers с Hono
  3. Потоковая SSR с периферии
  4. Стратегии периферийного кэширования для приложений React
← Назад к React Academy