Petite-Vue применяет декларативный подход к связыванию данных и управлению состоянием через атрибуты HTML. Шаблоны остаются валидной разметкой, без необходимости предварительной компиляции или отдельных файлов.
v-scopev-scope задаёт контекст, из которого шаблон получает
данные и методы. Объект, переданный атрибуту, становится источником
реактивных свойств. Изменение значения приводит к обновлению
соответствующих узлов DOM.
Пример:
<div v-scope="{ count: 0, inc() { this.count++ } }">
<button @click="inc">+</button>
{{ count }}
</div>
Ключевой момент: данные принадлежат DOM-узлу, а не глобальной области.
{{ ... }}Выражения внутри двойных фигурных скобок вычисляются в контексте
текущего v-scope. Поддерживаются арифметика, доступ к
свойствам, вызов методов. Интерполяции выполняются односторонне:
значение отображается, но не изменяет исходное состояние.
Недопустимо размещать сложные выражения, изменяющие данные, внутри интерполяций. Такие операции выполняют через обработчики событий или методы.
v-bind и сокращение
:v-bind связывает значение атрибута с выражением.
Применяется к нативным HTML-атрибутам, классам и стилям.
<img :src="avatarUrl" :alt="user.name">
При обновлении данных атрибуты получают новое значение без манипуляций через JavaScript.
v-text и v-htmlv-text вставляет текстовый узел, избегая интерполяций.
v-html вставляет HTML-фрагмент как DOM-структуру.
Использование v-html требует аккуратности из-за
потенциальной возможности внедрения небезопасного содержимого.
v-show и v-ifv-show управляет свойством display у
элемента. v-if добавляет или удаляет элемент из DOM.
v-if логически тяжелее, но полностью исключает узел при
ложном выражении.
<div v-if="visible">...</div>
<div v-show="visible">...</div>
v-on и сокращение
@v-on привязывает обработчики событий. Поддерживаются
нативные события браузера и выражения с доступом к состоянию.
<button @click="toggle">Переключить</button>
Методы вызываются в контексте текущего v-scope.
Шаблон допускает короткие выражения: доступ к свойствам, тернарные операторы, арифметику, логические операции. Запрещены объявления и управляющие конструкции, чтобы сохранить выражения чистыми и предсказуемыми.
Допустимые примеры:
<span :class="active ? 'on' : 'off'"></span>
<span>{{ price * count }}</span>
v-forv-for повторяет элемент для каждой сущности в коллекции.
Синтаксис ближе к Vue, но сохраняет компактность Petite-Vue.
<li v-for="item in list">{{ item }}</li>
Ключевым аспектом является то, что v-for создает
контекст для каждой итерации, предоставляя доступ к текущему значению и
индексу.
v-modelv-model обеспечивает синхронизацию значения формы и
свойства состояния. Применимо для input,
textarea, select и пользовательских
сценариев.
<input v-model="title">
При вводе символов свойство title обновляется
автоматически, а любые изменения title отражаются в
интерфейсе.
События могут использовать модификаторы: prevent,
stop, once, self и другие. Они
управляют поведением обработчиков без дополнительного JavaScript.
<form @submit.prevent="save">
Модификатор prevent предотвращает стандартное поведение
события.
В шаблонах допускается использование вычисляемых свойств через методы
v-scope. Комбинация вычислений в атрибутах и интерполяциях
делает синтаксис компактным, сохраняя выразительность.
Petite-Vue не применяет виртуальный DOM и не компилирует шаблоны заранее. Связывание происходит непосредственно с реальным DOM, что снижает накладные расходы, особенно в небольших интерфейсах. Благодаря этому синтаксис директив стремится быть минималистичным и понятным.
Контекст v-scope не переопределяет контексты дочерних
узлов автоматически. При вложении создаются независимые области. Это
позволяет разделять логику между компонентами без явной системы
компонентов.
Для class и style поддерживаются объектный
и массивный синтаксисы, подобные Vue:
<div :class="{ active, disabled: !enabled }"></div>
<div :style="{ color: textColor, fontSize: size + 'px' }"></div>
Такой подход обеспечивает декларативное формирование стилей на основе состояния.
Несколько директив могут применяться одновременно. Например:
v-for с v-bind и обработчиком событий. Важно
соблюдать лаконичность выражений; тяжёлая логика помещается внутрь
методов.
Синтаксис шаблонов Petite-Vue следует принципу минимальных надстроек над HTML. Главная цель — предоставить реактивность и декларативность без расширения языка разметки. Это проявляется в компактности директив, ограниченности выражений и прямой работе с DOM без виртуального слоя.