12k
All articles

Val Town: Serverless JavaScript в браузере

Val Town — браузерная платформа для serverless JavaScript и TypeScript, с vals, средой Deno, SQLite, blob storage, email и OpenAI.

OpenReplay Team
OpenReplay Team
Val Town: Serverless JavaScript в браузере

Если вам когда-либо требовалась быстрая конечная точка webhook, запланированная загрузка данных или легковесный API — но вы не хотели разворачивать сервер, настраивать IAM-роли или работать с конвейером развертывания — Val Town был создан именно для таких ситуаций.

Val Town — это браузерная платформа для написания и развертывания serverless JavaScript и TypeScript. Вы пишете код в браузере, а он выполняется на управляемой среде выполнения Deno в облаке. Ваш код никогда не выполняется в браузере конечного пользователя — это важное различие. Браузер — это просто редактор. Выполнение происходит на стороне сервера, в изолированной среде Deno, полностью управляемой Val Town.

Ключевые выводы

  • Val Town — это браузерная платформа для написания и развертывания serverless JavaScript/TypeScript на управляемой среде выполнения Deno
  • Код организован в vals — версионируемые, мгновенно развертываемые единицы, запускаемые HTTP-запросами, расписаниями cron или входящими электронными письмами
  • Встроенные сервисы, такие как SQLite, blob-хранилище, email и клиент OpenAI, устраняют необходимость во внешней инфраструктуре для небольших проектов
  • Val Town идеально подходит для легковесных API, webhook’ов, запланированных задач и связующего кода, но не для долгоработающих или вычислительно-интенсивных задач

Что такое Val? Основная единица Serverless JavaScript в Val Town

Всё в Val Town организовано вокруг vals — версионируемых, развертываемых единиц кода. Представьте val как небольшую, самодостаточную функцию или сервис. Каждый val сохраняется, версионируется и мгновенно развертывается в момент сохранения.

Vals поддерживают три типа триггеров:

  • HTTP: Отвечает на веб-запросы. Ваш val получает объект Request и возвращает Response — стандартная семантика Fetch API, знакомая всем, кто использовал Cloudflare Workers.
  • Cron: Выполняется по расписанию, используя синтаксис cron или простые интервальные расписания. Полезно для периодических задач, таких как отправка отчетов или синхронизация данных.
  • Email: Запускается при получении электронного письма на адрес Val Town. Подходит для создания легковесных автоматизаций, управляемых электронной почтой.

Среда выполнения Deno в Val Town: на чём фактически выполняется ваш код

Val Town использует Deno в качестве среды выполнения, а не Node.js. Это имеет практическое значение. Вы импортируете модули через URL или с помощью спецификаторов npm:, а не используя package.json. Многие API, специфичные для Node.js (fs, path), ведут себя иначе или недоступны.

Преимущество: модель разрешений и модульная система Deno хорошо подходят для изолированной многопользовательской среды. Компромисс: некоторые npm-пакеты, зависящие от внутренних компонентов Node, не будут работать без адаптации.

Встроенные возможности для легковесной backend-разработки

Val Town включает стандартную библиотеку размещенных сервисов, поэтому вам не нужно подключать внешнюю инфраструктуру для типичных задач:

  • SQLite — Постоянное структурированное хранилище данных для каждого val. Подходит для небольших наборов данных, счетчиков и состояний.
  • Blob Storage — Хранение и извлечение произвольных данных: JSON-файлов, изображений, текста.
  • Email — Отправка электронных писем непосредственно из val одним вызовом функции.
  • OpenAI — Предварительно настроенный клиент OpenAI, готовый к использованию без управления API-ключами в коде.

Вот минимальный HTTP val для иллюстрации паттерна:

export default async function handler(req: Request): Promise<Response> {
  const data = { message: "Hello from Val Town", timestamp: Date.now() }
  return new Response(JSON.stringify(data), {
    headers: { "Content-Type": "application/json" },
  })
}

Сохраните его, и он сразу же станет доступен по публичному URL. Никакого шага сборки, никакой команды развертывания.

Когда использовать Val Town — и когда не стоит

Val Town хорошо подходит, когда вам нужно:

  • Быстрый serverless API или приемник webhook без настройки инфраструктуры
  • Запланированные задачи, выполняемые по расписанию cron
  • Связующий код для соединения сторонних сервисов
  • Быстрое прототипирование backend-логики

Он менее подходит для:

  • Долгоработающих процессов (применяются ограничения времени выполнения)
  • Вычислительно-интенсивных задач
  • Приложений, требующих Node.js-специфичных пакетов с нативными привязками
  • Сложных многосервисных архитектур, где полноценная платформа (AWS, GCP) имеет больше смысла

Локальная разработка и инструментарий

Разработка в браузере удобна, но Val Town также поддерживает локальные рабочие процессы. Val Town CLI позволяет редактировать и развертывать vals из терминала. Также есть руководство по MCP для разработки с помощью LLM и JavaScript SDK для программного доступа через REST API.

Заключение

Val Town занимает специфическую и полезную нишу: браузерная serverless-разработка для небольших сервисов, автоматизаций и API. Он устраняет практически все трудности развертывания для тех видов легковесных backend-задач, которые регулярно требуются frontend-разработчикам. Если ваш случай использования вписывается в его модель выполнения и среду выполнения Deno, это один из самых быстрых способов перейти от идеи к работающей конечной точке.

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

Могу ли я использовать npm-пакеты в Val Town?

Да, но с оговорками. Val Town работает на Deno, поэтому вы импортируете npm-пакеты, используя синтаксис спецификатора npm:, а не устанавливая их через package.json. Большинство чистых JavaScript npm-пакетов работают нормально. Однако пакеты, которые зависят от внутренних компонентов Node.js или нативных C++ привязок, могут работать некорректно в изолированной среде Deno.

Бесплатен ли Val Town в использовании?

Val Town предлагает бесплатный тарифный план с ограничениями на выполнение и функции. Например, отправка электронных писем внешним получателям и более высокие лимиты использования зарезервированы для платных планов. Платные планы доступны для увеличенных лимитов, более длительного времени выполнения и дополнительных функций, таких как приватные vals. Проверьте страницу тарифов Val Town для получения актуальной информации об ограничениях планов и стоимости.

Как Val Town обрабатывает переменные окружения и секреты?

Val Town предоставляет встроенный менеджер секретов, где вы можете хранить API-ключи и конфиденциальные значения. Эти секреты доступны в ваших vals как переменные окружения через Deno.env.get или process.env, сохраняя учетные данные вне исходного кода. Секреты привязаны к вашей учетной записи и не видны другим пользователям.

Каковы ограничения времени выполнения для vals?

Val Town устанавливает ограничения времени выполнения, которые варьируются в зависимости от тарифного плана. Vals бесплатного тарифа обычно имеют более короткое окно тайм-аута, в то время как платные планы предлагают расширенное время выполнения. Эти ограничения делают Val Town непригодным для долгоработающих фоновых процессов, но вполне адекватным для обработчиков API, запланированных задач и быстрых автоматизаций.

DevTools for the frontend

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers.

Star on GitHub12k

We use cookies to improve your experience. By using our site, you accept cookies.