Back

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

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, это один из самых быстрых способов перейти от идеи к работающей конечной точке.

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

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

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

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

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

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. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay