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. Никакого шага сборки, никакой команды развертывания.
Discover how at OpenReplay.com.
Когда использовать 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.