Проблема: В современных Angular-приложениях управление состоянием часто становится сложным и трудоёмким, особенно когда используются различные подходы, такие как NgRx или манипуляции с обычными переменными. Это может привести к трудностям в отслеживании изменений состояния и взаимодействии между компонентами.
Решение: Использование Signals — нового инструмента для управления состоянием, который упрощает реактивное программирование в Angular и улучшает производительность. Signals обеспечивают прямое отслеживание изменений состояния, что делает код более читаемым и эффективным.
Пример кода для простого счётчика с использованием Signals:
import { signal } from '@angular/core';
export const counterSignal = signal(0);
export function incrementCounter() {
counterSignal.update(count => count + 1);
}
export function decrementCounter() {
counterSignal.update(count => count - 1);
}
Преимущества:
— Использование Signals упрощает код и делает его легче для понимания.
— Signals обеспечивают более эффективное отслеживание изменений, чем традиционные подходы.
— Signals можно интегрировать с другими подходами, такими как RxJS, для получения максимальной гибкости.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Альтернатива Node.js получила масштабное обновление:
— Теперь с поддержкой Windows
— bun serve стабилен — встроенный HTTP-сервер без Express
— Пакеты ставятся мгновенно: bun install быстрее npm в 30x
— Совместимость с Node API 95%+
— Встроенный bun test и JSX/TSX без конфигурации
Установить можно через терминал:
curl -fsSL https://bun.sh/install | bash
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Когда вы вешаете сразу несколько анимаций на один элемент, они обычно дерутся.
Свойство animation-composition решает это:
.element {
animation: fade 2s, slide 2s;
animation-composition: add;
}
Чтобы не объединять всё в один @keyframes, не городить JS, и не терять голову от конфликтов.
Работает в Chrome, Firefox, и постепенно внедряется в остальное.
#буст
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
Кажется, все уже что-то выбирают: одни бегут за хайпом, другие держатся за проверенное. Но где середина? Это видео — попытка расставить всё по местам.
Что в видео:
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🧤 Грин-флаги в вакансиях: что отличает хорошего работодателя
Фронтендерам знакома боль: вакансии с мутными обязанностями, отсутствующим стеком и «гибким графиком», который на деле оборачивается круглосуточной доступностью.
В статье:
📍 Как распознать нормальную вакансию по формулировкам
📍 Что говорит о зрелости компании: от стажировки до собеседования
📍 Какие детали в описании стека и обязанностей — тревожный звоночек
📍 Почему четкость условий — не роскошь, а базовый грин-флаг
🔗 Читать на Proglib
🐸 Библиотека фронтендера
Фронтендерам знакома боль: вакансии с мутными обязанностями, отсутствующим стеком и «гибким графиком», который на деле оборачивается круглосуточной доступностью.
В статье:
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
Наглядные примеры полезных элементов (<figure>, <details>, <dialog> и др.), повышающих семантику и интерактивность.
Советы по типографике, кликабельности, виртуальным клавиатурам и адаптивности интерфейсов.
Краткий гид по исправлению типовых недочётов, влияющих на восприятие контента пользователями с особыми потребностями.
Полезные трюки: inset, стилизация без +, улучшение медиа-запросов и кнопок.
Актуальные нововведения: вложенность, :user-valid, balance, расширенные возможности форматирования.
#свежак
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
Разработчик Javascript — от 150 000 ₽, удаленно (Москва)
Frontend developer (React) — от 180 000 до 250 000 ₽, удаленно (Москва)
Frontend-разработчик — офис (Санкт-Петербург)
Senior Frontend Developer — 4 200 — 6 000 $, удаленно/помощь с релокацией (Грузия)
Frontend-developer — 120 000 - 200 000 ₽, удаленно (Москва)
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Проблема: при разработке Angular-приложений важно обеспечить высокое качество кода и стабильность функционала. Отсутствие автоматизированных тестов может привести к увеличению количества ошибок и снижению доверия к продукту.
Решение: в книге Mastering Angular Test-Driven Development автор предлагает внедрить практики тестирования с использованием Jasmine и Karma.
Пример теста для компонента PercentPipe, который форматирует числа в проценты:
import { PercentPipe } from './percent.pipe';
describe('PercentPipe', () => {
it('should create an instance', () => {
const pipe = new PercentPipe();
expect(pipe).toBeTruthy();
});
});
Преимущества:
— Обеспечивает высокое качество и стабильность кода.
— Упрощает выявление и исправление ошибок на ранних стадиях разработки.
— Снижает риски при внесении изменений в кодовую базу.
— Ускоряет процесс разработки за счет автоматизации тестирования.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Инструменты предназначены для улучшения взаимодействия с пользователем и оптимизации производительности веб-приложений.
Этот компонент упрощает добавление анимаций при изменении состояния UI. Он автоматически определяет, какие части интерфейса должны быть анимированы, и применяет соответствующие CSS-анимations.
Пример использования:
<ViewTransition>
<div>Контент с анимацией</div>
</ViewTransition>
Триггеры анимации:
startTransition(() => setState(...))
useDeferredValue(value)
<Suspense fallback={<Fallback />}>...</Suspense>
Настройка анимации:
::view-transition-old(*) {
animation: 300ms ease-out fade-out;
}
::view-transition-new(*) {
animation: 300ms ease-in fade-in;
}
Эти анимации используют новый API startViewTransition, доступный в большинстве современных браузеров.
Этот компонент позволяет скрывать и показывать части интерфейса без потери их состояния. Это особенно полезно для оптимизации производительности при рендеринге больших списков или сложных компонентов.
Пример использования:
анимации:
startTransition(() => setState(...))
useDeferredValue
Это позволяет React эффективно управлять рендерингом и минимизировать ненужные обновления DOM.
⚠️ Функции находятся на стадии эксперимента, и финальный API может измениться.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Когда проект растёт, время сборки может стать серьёзной проблемой. Рассмотрим несколько методов для ускорения процесса с помощью Webpack.
Использование файлового кэша позволяет избегать повторной сборки неизменённых модулей.
Как настроить:
cache: {
type: 'filesystem',
}
➡️ WebPack не пересобирает всё с нуля, а использует кэшированные данные, что сокращает время сборки.
Удаление неиспользуемого кода, чтобы уменьшить размер бандла.
Как настроить:
optimization: {
usedExports: true,
}
Позволяет разделять код между несколькими приложениями, загружая только необходимые части.
Как настроить:
позволяет избегать повторной сборки неизменённых модулей.
Как настроить:
cache: {
type: 'filesystem',
}
➡️
WebPack не
Минификация и сжатие JavaScript-кода для уменьшения его размера.
Как настроить:
optimization: {
minimize: true,
minimizer: [new TerserPlugin()],
}
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Один из эффективных подходов — использование ChatGPT для генерации пользовательских путей на основе документации продукта.
Промпт:
Generate a user flow based on this PRD. Describe the pages, features, and major states.
Почему это полезно:
Пример использования:
Представим, что у нас есть PRD для приложения по доставке еды:
Generate a user flow based on this PRD: An app that allows users to order food from local restaurants, track delivery in real-time, and provide feedback after receiving the order.
ChatGPT предоставит описание пользовательского пути, включая страницы, функции и основные состояния.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🚨 Смешные новости про IT теперь в одном канале
Мы запустили @hahacker_news — наш новый юмористический IT-канал.
Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.
👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
Мы запустили @hahacker_news — наш новый юмористический IT-канал.
Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.
👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
Please open Telegram to view this post
VIEW IN TELEGRAM
В больших проектах рутина часто повторяется — запуск тестов, сборка, форматирование, генерация кода. Автоматизация через кастомные скрипты — лучший способ ускорить работу. Но еще руче — запускать их одним нажатием клавиши.
File > Settings > Tools > External Tools
Settings > Keymap
и в поиске введите название External Tool
Add Keyboard Shortcut
→ назначь удобную комбинацию#буст
Please open Telegram to view this post
VIEW IN TELEGRAM