Библиотека фронтендера | Frontend, JS, JavaScript, React.js, Angular.js, Vue.js
22.7K subscribers
2.34K photos
140 videos
38 files
4.75K links
Все самое полезное для фронтенда в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/77178ed4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5b6884689c2151c820bb4
Download Telegram
🔍 AI-инструменты, которые я использую каждый день

Подписчик делится своим опытом применения AI-инструментов в фронтенд-разработке.

А какое ваше мнение на этот счет? Делитесь в комментариях 👇

🐸 Библиотека фронтендера
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👀 Нужен ли Tailwind c Svelte: вот в чем вопрос

В Svelte уже есть изоляция стилей через scoped CSS, но стоит ли добавлять Tailwind? Этот инструмент был создан для React, чтобы бороться с проблемой «протекания» стилей, которая в Svelte не возникает.

Зачем использовать Tailwind:

— Быстрая верстка без необходимости писать свой CSS.

— Готовая система цветов, шрифтов, отступов.

— Легко переносить классы и шаблоны между проектами.

— Если команда уже работает с Tailwind — проще не разводить свой CSS‑зоопарк.

⛔️ Почему можно обойтись без него:

— Шаблон может превратиться в мешанину из утилитарных классов.

— Для сложной анимации или кастомных эффектов Tailwind быстро становится неудобным.

— Встроенный scoped CSS в Svelte часто чище и понятнее.

— Чужой код на Tailwind порой тяжело читать и поддерживать.

А вы как думаете? Tailwind в Svelte — мастхэв или излишество? Делитесь в комментариях! ✏️

🐸 Библиотека фронтендера

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
⭐️ Подборка материалов по работе с состояниями в Vue

В этой подборке мы сосредоточимся на использовании watch и watchEffect в Vue.js для отслеживания изменений в данных и выполнения действий в ответ на эти изменения.

1. Watch и WatchEffect на практике — примеры самых часто используемых компонентов вместе с наблюдателями.

2. Работа с состоянием во Vue и React — отличия, использование, как перекликаются между двумя фреймворками.

3. watch vs watchEffect — когда использовать какой подход

4. Как выбрать библиотеку для управления состоянием — преимущества и недостатки Vuex и Pinia, а также советы по выбору подходящего инструмента для вашего проекта.

5. watchEffect — введение в watchEffect, который автоматически отслеживает все реактивные зависимости внутри своей функции.

🐸 Библиотека фронтендера

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🫥 Топ-вакансий для фронтендеров за неделю

Senior front-end developer (React) — от 380 000 ₽, удаленно (Москва)

Team Lead Frontend — от 300 000 ₽, удаленно (Москва)

Frontend-разработчик — гибрид (Москва)

JavaScript - разработчик — гибрид (Санкт-Петербург)

Старший Frontend (JavaScript) разработчик — от 350 000 до 400 000 ₽, удаленно (Москва)

➡️ Еще больше топовых вакансий — в нашем канале Javascript jobs

🐸 Библиотека фронтендера

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🎮 Реактивность и вычисляемые свойства для фильтрации данных

Проблема: необходимо динамически обновлять интерфейс в зависимости от ввода пользователя, например, при фильтрации списка элементов.

Решение: в книге «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 для работы с реактивностью.

➡️ Еще больше полезных книг — в нашем канале @progbook

🐸 Библиотека фронтендера

#буст
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
⭐️ Инструмент для сборки фронта без боли и конфигов

Parcel — это бандлер, который позволяет собирать фронтенд без настройки Webpack’а, Vite или Rollup. Он сам определяет, как обрабатывать файлы, и просто работает из коробки.

Зачем нужен:

➡️ Zero config — Parcel не требует настройки, просто укажи entry-файл — и он соберёт проект.

➡️Поддержка всего — работает с TypeScript, JSX, SCSS, PostCSS, Vue, Elm, Rust, WASM и даже GLSL.

➡️ Встроенный HMR — обновляет страницу без перезагрузки, работает быстро и стабильно.

➡️ Кеширование и многопоточность — ускоряет сборку даже на больших проектах.

➡️ Встроенный минификатор, tree-shaking и код-сплиттинг — ничего не нужно подключать вручную.

Как использовать:

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.

🔗 Последняя версия v.2.15.3

🐸 Библиотека фронтендера

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👀 Выбираем между PWA и нативом

Современный веб давно вышел за рамки «страниц» — PWAs поддерживают офлайн и устанавливаются как обычные приложения. Но достаточно ли этого для полной замены нативного клиента?

Плюсы PWA:

— Мгновенная установка: «Добавить на главный экран» без ожидания модерации

— Автоматические обновления: пользователи всегда на последней версии (Pinterest PWA +60% конверсии)

— SEO и открытость: индексируются поисковиками — новые аудитории через Google

— Кроссплатформа: единый код для веба, Android и iOS

⛔️ Ограничения PWA:

— iOS-барьеры: фоновые уведомления и Web Push в iOS работают только в активном окне

— Ограниченный API-доступ: нет полного доступа к AR/VR, Bluetooth LE, NFC и другим системным фичам

— Системные бейджи и deep linking: натив реализует их куда глубже (SMS-связывание, Universal Links)

— Heavy-duty кейсы: игры с высокой частотой кадров, фоторедакторы или видео-стриминг требуют нативной производительности.

Когда что выбрать:

➡️ Контентные проекты (новостные сайты, e-commerce): PWA для быстрого запуска, SEO и мгновенной установки

➡️ Тяжёлые» приложения (игры, AR/VR, сложные SDK): натив для полной производительности и всех API

➡️ Гибридный подход: PWA как дополнительней канал плюс нативное ядро — лучшее из обоих миров

А вы уже пробовали PWA вместо нативных? В каких проектах это сработало, а где вы всё же вернулись к «родному» коду?

🐸 Библиотека фронтендера

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
⭐️ Скрытые возможности Radix UI

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
😀 Что полезного для фронтенда в Chrome 138

Обновление браузера принесло фичи, которые открывают новые возможности в UI и улучшении пользовательского опыта.

В карточках разберем:

➡️ Какие AI API теперь доступны прямо в браузере

➡️ Что нового появилось в CSS-функциях

➡️ Что помогает адаптировать вёрстку под складные экраны

🔗 Источник

🐸 Библиотека фронтендера
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM