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- отслеживает привязки состояния к DOMbindText(),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 коммита), пока без звёзд и без релизов. Ценность здесь в самом паттерне, а не в зрелости библиотеки.