Проблема: необходимо динамически обновлять интерфейс в зависимости от ввода пользователя, например, при фильтрации списка элементов.
Решение: в книге «Building Real-World Web Applications with Vue.js 3» автор показывает, как эффективно использовать реактивные данные и вычисляемые свойства для реализации фильтрации в реальном времени.
Пример кода:
<template>
<div>
<input v-model="searchQuery" placeholder="Поиск..." />
<ul>
<li v-for="item in filteredItems" :key="item.id">{{ item.name }}</li>
</ul>
</div>
</template>
<script setup>
import { ref, computed } from 'vue';
const items = ref([
{ id: 1, name: 'Яблоко' },
{ id: 2, name: 'Банан' },
{ id: 3, name: 'Вишня' },
]);
const searchQuery = ref('');
const filteredItems = computed(() => {
return items.value.filter(item =>
item.name.toLowerCase().includes(searchQuery.value.toLowerCase())
);
});
</script>
Преимущества:
— Автоматическое обновление интерфейса без явных манипуляций с DOM.
— Легкость в реализации фильтрации для больших списков.
— Удобное и понятное API для работы с реактивностью.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
На собеседовании вам могут задать вопросы о том, как работают методы, которые помогают оптимизировать частые события в JavaScript.
В карточках разберем:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Parcel — это бандлер, который позволяет собирать фронтенд без настройки Webpack’а, Vite или Rollup. Он сам определяет, как обрабатывать файлы, и просто работает из коробки.
Зачем нужен:
Как использовать:
1. Установите Parcel в проект:
npm install --save-dev parcel
2. Создай простой index.html и укажи путь к JS-файлу:
<script src="./index.ts"></script>
3. Запустите дев-сервер:
npx parcel index.html
4. Соберите проект для продакшна:
npx parcel build index.html
Что важно знать:
— Parcel сам создаёт конфигурации Babel, TypeScript и PostCSS, но ты можешь переопределить их, если нужно.
— Поддерживает alias’ы, .env-файлы и monorepo через workspaces.
— Идеально подходит для новичков, быстрых MVP или проектов, где хочется меньше ceremony.
— Отлично сочетается с React, Vue, Preact и VanillaJS.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Современный веб давно вышел за рамки «страниц» — PWAs поддерживают офлайн и устанавливаются как обычные приложения. Но достаточно ли этого для полной замены нативного клиента?
— Мгновенная установка: «Добавить на главный экран» без ожидания модерации
— Автоматические обновления: пользователи всегда на последней версии (Pinterest PWA +60% конверсии)
— SEO и открытость: индексируются поисковиками — новые аудитории через Google
— Кроссплатформа: единый код для веба, Android и iOS
— iOS-барьеры: фоновые уведомления и Web Push в iOS работают только в активном окне
— Ограниченный API-доступ: нет полного доступа к AR/VR, Bluetooth LE, NFC и другим системным фичам
— Системные бейджи и deep linking: натив реализует их куда глубже (SMS-связывание, Universal Links)
— Heavy-duty кейсы: игры с высокой частотой кадров, фоторедакторы или видео-стриминг требуют нативной производительности.
Когда что выбрать:
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Radix UI — это не просто компоненты, а гибкий набор примитивов с точным контролем поведения. Вот несколько фишек, которые можно использовать:
Большинство компонентов (Dialog, Popover, DropdownMenu) можно открыть/закрыть вручную через open и onOpenChange. Это удобно для синхронизации с глобальным состоянием или URL.
<Dialog open={isOpen} onOpenChange={setIsOpen}>
{/* ... */}
</Dialog>
По умолчанию контент рендерится в body через Portal. Но если нужен рендеринг в текущем DOM (для стилизации, тестирования или ограничения области), вы можете отказаться от портала.
<Dialog.Content>
{/* ... */}
</Dialog.Content>
Radix по умолчанию удаляет элементы из DOM при скрытии. Чтобы включить CSS-анимации ухода (opacity, scale, transform), используйте forceMount.
<Dialog.Content forceMount className="fade-out-animation">
{/* ... */}
</Dialog.Content>
Вы можете вкладывать один компонент в другой — например, Popover в DropdownMenu или Dialog в Tabs. Radix правильно обрабатывает фокус, события и поведение, даже в сложных вложенных интерфейсах.
Radix UI даёт не просто готовые элементы — он предоставляет гибкий интерфейсный слой, который адаптируется под архитектуру вашего приложения.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Обновление браузера принесло фичи, которые открывают новые возможности в UI и улучшении пользовательского опыта.
В карточках разберем:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM