advanced

Workers

JavaScript или TypeScript на edge: request handlers, bindings, ограниченные runtime API и latency-sensitive архитектура.

Workers выполняют JavaScript или TypeScript на edge Cloudflare в модели V8 isolate — не полный Node.js. Обработчики получают события `fetch`, могут маршрутизировать, переписывать, аутентифицировать или вызывать bindings (KV, R2, D1, Durable Objects) с низкой latency по миру.

					export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const url = new URL(request.url);
    if (url.pathname.startsWith('/api/')) {
      return fetch(`https://origin.example${url.pathname}`, request);
    }
    return env.ASSETS.fetch(request);
  },
};
				

| Ограничение | Следствие | |-------------|-----------| | Нет нативных Node API | Workers-совместимые libs или polyfills | | Лимиты CPU/времени | Тяжёлую работу — на origin или в очереди | | Bindings | Типизированный доступ к KV, R2, D1, DO |

Wrangler деплоит с environments, secrets и routes. Хорошие кейсы: auth на edge, A/B routing, лёгкий BFF, geo-заголовки, проверка JWT до origin.

На интервью: Workers vs Lambda vs Node-сервер, лимиты runtime, архитектура bindings, секреты и когда edge-логика должна оставаться тонкой.

Типовые ошибки: перенос Express «как есть»; долгий CPU или большие JSON-трансформации на edge; ожидание `fs` или native modules; stateful sessions без Durable Objects или внешнего store.

Компромисс — глобальная низкая latency и разгрузка origin против ограничений runtime, vendor API и отладки распределённого edge-кода.

Чеклист:

  • Небольшие I/O-bound handlers.
  • Bindings вместо захардкоженных секретов origin.
  • Локальные и staged тесты через Wrangler.
  • Тяжёлую или Node-специфичную работу — на origin.