EnglishРусский Map

vamp

title
vamp
type
toolbox
summary
Однофайловый слой представлений на TypeScript с явными привязками к DOM, рассчитанный на понимание LLM
tags
typescript, frontend, llm, coding-agent
language
TypeScript
license
Unknown
created
2026-04-11
updated
2026-04-11
lang
ru
translation_of
vamp
source_updated
2026-04-11
translated
2026-09-01
translator
lllm/antigravity/gemini-3.7-flash-medium

Минималистичный фронтенд-паттерн для разработки с участием ИИ. Это не фреймворк в привычном понимании с npm-установкой - это один TypeScript-файл (vamp.ts), который просто копируется в проект. Архитектура жертвует мощью фреймворка ради понятности для LLM: любое поведение явно, каждая привязка локальна, а неявного состояния нет вовсе (никакого VDOM, хуков или reconciliation).

Базовая абстракция - View<State, Message> с тремя методами: конструктор, который рендерит исходный HTML, sync(state), передающий изменения состояния в DOM через явные привязки, и destroy() для очистки ресурсов. Состояние приложения передаётся в одном направлении: событие DOM -> dispatch -> update() -> view.sync().

Основной API:

  • Binder - отслеживает привязки состояния к DOM
  • bindText(), bindAttr(), bindClass(), bindVisible() - привязки на уровне элементов
  • bindChild(), bindSlot(), bindList() - композиция (статические дочерние элементы, условное монтирование/размонтирование, списки с ключами)
  • ref() - генератор уникальных ID для предотвращения коллизий селекторов
  • cls() / mountStyle() - CSS-in-JS с уникальными именами классов, без шага сборки
  • sanitize() - защита шаблонных строк от XSS

Всё это работает без какого-либо бандлера, помимо компиляции TypeScript. Никаких node_modules, рантайма фреймворка или инструментов сборки.

Паттерн намеренно однообразен. Представления - это длинные плоские списки явных привязок. Повторения, которые наскучили бы человеку, для LLM бесплатны: сгенерировать 50 вызовов bindText стоит столько же, сколько и 5. Компромисс таков: теряются экосистема React (библиотеки компонентов, DevTools, Next.js) и возможности абстракции (собственные хуки, контекст). Взамен получается паттерн, который LLM может сгенерировать правильно с первой попытки, не рассуждая о внутреннем устройстве фреймворка.

См. vamp-ai-frontend с подробными аргументами о том, почему неявность фреймворков вредит коду, который пишет ИИ.

Repo: https://github.com/dlants/vamp - совсем свежий (3 коммита), пока без звёзд и без релизов. Ценность здесь в самом паттерне, а не в зрелости библиотеки.