Petite-Vue — это легковесная библиотека для создания реактивных интерфейсов, предоставляющая простоту Vue.js, но с минимальными зависимостями и меньшим количеством ресурсов. Одним из ключевых принципов работы Petite-Vue является функциональный подход к созданию компонентов. Вместо использования классов или экземпляров компонентов, как это происходит в традиционных фреймворках, здесь активно используется композиция функций. Такой подход позволяет создать более гибкие и понятные архитектуры для небольших проектов.
В контексте Petite-Vue композиция функций заключается в объединении различных функций для создания компонентов. Это позволяет легко управлять состоянием, поведением и реактивностью, разделяя логику приложения на небольшие, многократно используемые части. В отличие от классического подхода, где все элементы (данные, методы, жизненный цикл) находятся в одном объекте, композиция позволяет изолировать и повторно использовать каждый аспект приложения.
Композиция в Petite-Vue базируется на функции
defineComponent. С помощью этой функции можно описать
реактивность, методы и шаблоны компонента, сочетая их в единую
конструкцию.
const MyComponent = defineComponent(() => {
const count = ref(0);
function increment() {
count.value++;
}
return {
count,
increment
};
});
В данном примере создается компонент с одним реактивным состоянием
(count) и методом increment, который
увеличивает это состояние. Важно отметить, что весь компонент
определяется в одном месте с помощью функций, что способствует лучшему
разделению логики и делает код более читаемым.
reactive и
refPetite-Vue, как и Vue.js, использует два основных способа создания
реактивных данных: reactive и ref.
ref используется для создания
реактивных примитивных значений (например, чисел, строк).reactive применяется для создания
реактивных объектов и массивов.const state = reactive({
name: 'John',
age: 30
});
const count = ref(0);
В обоих случаях данные остаются реактивными, и любые изменения в этих значениях автоматически обновляют связанные с ними участки интерфейса.
Хуки — это функции, которые позволяют управлять состоянием, жизненным
циклом компонента и побочными эффектами. В Petite-Vue есть несколько
основных хуков, таких как onMounted,
onUpdated, onUnmounted. Эти функции позволяют
обработать момент монтирования, обновления и размонтирования
компонента.
const MyComponent = defineComponent(() => {
const count = ref(0);
onMounted(() => {
console.log('Компонент смонтирован');
});
onUpdated(() => {
console.log('Компонент обновлен');
});
function increment() {
count.value++;
}
return {
count,
increment
};
});
В этом примере onMounted и onUpdated
регистрируют колбэки, которые выполняются при монтировании и обновлении
компонента соответственно.
watch и computedДля управления побочными эффектами и вычисляемыми значениями в
Petite-Vue используются два ключевых инструмента: watch и
computed.
watch позволяет отслеживать изменения
реактивных данных и выполнять действия на основе этих изменений.const count = ref(0);
watch(count, (newValue, oldValue) => {
console.log(`Значение изменилось с ${oldValue} на ${newValue}`);
});
computed используется для создания
вычисляемых свойств, которые автоматически пересчитываются при изменении
зависимостей.const count = ref(0);
const doubledCount = computed(() => count.value * 2);
В данном примере doubledCount будет автоматически
обновляться при изменении count.
Часто полезно разделить логику приложения на несколько частей, чтобы сделать код более модульным и повторно используемым. В Petite-Vue композиция позволяет легко интегрировать различные функции для разделения задач. Например, можно выделить логику для обработки форм, управления состоянием или работы с API в отдельные функции.
function useForm() {
const formData = reactive({
name: '',
email: ''
});
function submitForm() {
console.log('Форма отправлена', formData);
}
return {
formData,
submitForm
};
}
const MyComponent = defineComponent(() => {
const { formData, submitForm } = useForm();
return {
formData,
submitForm
};
});
В этом примере используется хук useForm, который
изолирует логику для работы с формой. Эта функция может быть
использована в разных компонентах, что упрощает тестирование и улучшает
читаемость кода.
В Petite-Vue компоненты могут передавать данные и методы друг другу через пропсы и события, но также можно использовать композицию функций для централизованного управления состоянием и поведением. Например, можно создать хранилище для глобального состояния, а затем передавать его в различные компоненты.
function useStore() {
const count = ref(0);
function increment() {
count.value++;
}
return {
count,
increment
};
}
const Store = useStore();
const MyComponent = defineComponent(() => {
return {
count: Store.count,
increment: Store.increment
};
});
Здесь компонент MyComponent использует глобальное
хранилище Store, которое можно передавать и использовать в
разных частях приложения.
Использование композиции функций в Petite-Vue дает несколько значительных преимуществ:
Таким образом, композиция функций является ключевым инструментом при разработке на Petite-Vue, позволяя создать приложения, которые легко расширять, тестировать и поддерживать.