Petite-Vue — это лёгкая реактивная библиотека, упрощённая версия Vue.js, ориентированная на небольшие проекты и постепенное внедрение реактивности. Основной принцип работы Petite-Vue заключается в автоматическом обновлении DOM при изменении данных, благодаря реактивной привязке состояния.
В основе обновления DOM лежат реактивные объекты. Любой объект,
созданный с помощью reactive() или определённый через
директиву v-scope, становится наблюдаемым. Любое изменение
свойств этого объекта автоматически отражается в DOM.
const app = PetiteVue.createApp({
message: "Привет, Petite-Vue!"
});
app.mount('#app');
<div id="app" v-scope="app">
{{ message }}
</div>
При изменении свойства message в объекте
app, текст в DOM обновляется без дополнительных
манипуляций:
app.message = "Обновлённое сообщение";
Ключевой момент: реактивность работает только с теми свойствами, которые изначально определены в объекте состояния.
Petite-Vue поддерживает несколько встроенных директив, влияющих на отображение и структуру DOM:
v-text — вставка текста.v-html — вставка HTML-контента.v-show — условное отображение элемента
через CSS (display: none).v-if / v-else /
v-else-if — условный рендеринг элементов.v-for — повторение элементов на основе
массива.Пример динамического списка с v-for:
<ul v-scope="{ items: ['яблоко', 'банан', 'вишня'] }">
<li v-for="item in items">{{ item }}</li>
</ul>
Добавление элемента в массив автоматически создаёт новый
<li>:
app.items.push('груша');
Petite-Vue отслеживает изменения длины массива и обновляет DOM без перерисовки всей структуры.
Для интерактивности используется директива @event
(например, @click). События могут изменять состояние
реактивного объекта, что приводит к мгновенному обновлению DOM.
<div v-scope="{ count: 0 }">
<button @click="count++">Увеличить</button>
<p>Счётчик: {{ count }}</p>
</div>
Нажатие на кнопку увеличивает значение count, и текст
<p> обновляется автоматически. Это демонстрирует
двустороннюю связь между состоянием и интерфейсом.
Petite-Vue позволяет создавать локальные компоненты с собственными состояниями. Каждое состояние компонента привязывается к его DOM-узлам.
PetiteVue.createApp({
Counter: {
count: 0,
increment() {
this.count++;
}
}
}).mount();
<div v-scope="Counter">
<button @click="increment">+</button>
<span>{{ count }}</span>
</div>
Изменение count обновляет только соответствующий
компонент, не затрагивая остальной DOM. Это повышает производительность
за счёт локального обновления узлов.
Petite-Vue использует виртуальный DOM очень ограниченно и ориентируется на минимальное вмешательство в DOM. Обновление происходит только для изменённых узлов. При работе с массивами или объектами важно:
push, splice, pop), вместо
прямого изменения длины.Petite-Vue позволяет динамически изменять атрибуты и классы через
:attribute и :class. Любое изменение
реактивного состояния моментально отражается в DOM.
<div v-scope="{ isActive: false }" :class="{ active: isActive }">
Состояние активного класса
</div>
<button @click="isActive = !isActive">Переключить</button>
При изменении isActive класс active
добавляется или удаляется автоматически. Это применимо к
style и другим атрибутам: любые изменения состояния влияют
на DOM без ручной работы с document.querySelector.
Обновление DOM в Petite-Vue основано на реактивных объектах, минимальных изменениях и привязке состояния к элементам через директивы. Ключевые принципы:
v-text, v-html,
v-show, v-if, v-for управляют
отображением.Эта модель позволяет создавать динамичные интерфейсы с минимальным кодом и высокой производительностью.