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.