This media is not supported in your browser
VIEW IN TELEGRAM
Насколько сложным оказался для вас переход от HTML/CSS к JavaScript?
👍 – Настолько, что дальше я не продвинулся(ась).
❤️ – Было непросто, но справился(ась).
🤔 – JavaScript мне дался легко, не сложнее, чем HTML/CSS.
👉 @sWebDev | #юмор
👍 – Настолько, что дальше я не продвинулся(ась).
❤️ – Было непросто, но справился(ась).
🤔 – JavaScript мне дался легко, не сложнее, чем HTML/CSS.
👉 @sWebDev | #юмор
🤔13❤9👍5
Защита от потери данных при навигации
Функциональный гард
👉 @sWebDev
Функциональный гард
CanDeactivateFn в Angular предотвращает уход с маршрута для защиты от потери несохраненных данных. Гард — это функция, которая получает экземпляр компонента для проверки его состояния и возвращает true или false, разрешая или блокируя навигацию.import { CanDeactivateFn } from '@angular/router';
// Интерфейс, который должен реализовать компонент
export interface HasUnsavedChanges {
hasUnsavedChanges(): boolean;
}
// Функциональный гард, который проверяет наличие
// несохраненных изменений в компоненте.
export const unsavedChangesGuard: CanDeactivateFn<HasUnsavedChanges> = (
component
) => {
// Если есть несохраненные изменения, запрашиваем подтверждение
if (component.hasUnsavedChanges()) {
return confirm(
'У вас есть несохраненные изменения. Вы уверены, что хотите покинуть страницу?'
);
}
// Если изменений нет, разрешаем навигацию
return true;
};👉 @sWebDev
👍3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Как называется, когда ты следуешь инструкции, но совершенно не понимаешь ее смысла?
👍 — Это "главный признак джуна" — способность превратить решение на 5 минут в увлекательное трехдневное приключение.
❤️ — Называется «скопировал со Stack Overflow и надеюсь, что сработает».
👉 @sWebDev | #юмор
👍 — Это "главный признак джуна" — способность превратить решение на 5 минут в увлекательное трехдневное приключение.
❤️ — Называется «скопировал со Stack Overflow и надеюсь, что сработает».
👉 @sWebDev | #юмор
👍6❤2
Two.js
Two.js — JavaScript-библиотека для 2D-рисования, которая предоставляет единый API для рендеринга в SVG, Canvas и WebGL. Упрощает создание и управление векторными фигурами и сценами. Подойдёт для создания интерактивной инфографики, визуализаций данных и процедурной графики.
👉 @sWebDev
Two.js — JavaScript-библиотека для 2D-рисования, которая предоставляет единый API для рендеринга в SVG, Canvas и WebGL. Упрощает создание и управление векторными фигурами и сценами. Подойдёт для создания интерактивной инфографики, визуализаций данных и процедурной графики.
👉 @sWebDev
❤2
Почему Error Boundaries в React — это не просто try...catch
Многие разработчики считают Error Boundaries аналогом
👉 @sWebDev
Многие разработчики считают Error Boundaries аналогом
try...catch, но это заблуждение приводит к ошибкам в обработке сбоев. В статье разбирается, почему эти механизмы принципиально разные и в каких случаях стандартный try...catch бессилен. 👉 @sWebDev
👍2
Lingui.js
Lingui.js — библиотека для интернационализации (i18n) JavaScript-приложений. Использует стандарт ICU MessageFormat для работы со сложными правилами множественного числа и родов. Включает инструменты для извлечения сообщений из кода. Подойдёт для проектов, где требуется гибкая система локализации.
👉 @sWebDev
Lingui.js — библиотека для интернационализации (i18n) JavaScript-приложений. Использует стандарт ICU MessageFormat для работы со сложными правилами множественного числа и родов. Включает инструменты для извлечения сообщений из кода. Подойдёт для проектов, где требуется гибкая система локализации.
👉 @sWebDev
❤2
Функция хука
Что делает
Забыли? Вернитесь к посту от23.06.2025 .
👉 @sWebDev
Что делает
useSyncExternalStoreWithSelector()?Забыли? Вернитесь к посту от
👉 @sWebDev
❤1
Что делает useSyncExternalStoreWithSelector()?
Anonymous Quiz
15%
Хранит состояние компонента в localStorage.
24%
Создаёт внешний стор с мемоизацией.
14%
Гарантирует асинхронную синхронизацию состояний.
47%
Подписывается на внешний стор с выборкой и сравнением значений.
👍3
Синхронизация состояния компонента с URL
Кастомный хук
Для обновления применяется
👉 @sWebDev
Кастомный хук
useQueryState инкапсулирует логику синхронизации состояния с URL-параметрами. Данный подход объединяет useState и useSearchParams, очищая код компонента и беря начальное значение из URL.Для обновления применяется
useLayoutEffect, гарантируя изменение адресной строки до отрисовки браузером и исключая визуальную рассинхронизацию.import { useState, useLayoutEffect } from 'react';
import { useSearchParams } from 'react-router-dom';
function useQueryState(queryKey, initialValue) {
const [searchParams, setSearchParams] = useSearchParams();
const [value, setValue] = useState(
searchParams.get(queryKey) ?? initialValue
);
useLayoutEffect(() => {
const newParams = new URLSearchParams(searchParams);
newParams.set(queryKey, value);
setSearchParams(newParams);
}, [value, queryKey, searchParams, setSearchParams]);
return [value, setValue];
}👉 @sWebDev
👍3
Dockview
Dockview — JavaScript-библиотека для создания сложных панельных интерфейсов, как в современных IDE. Поддерживает перемещаемые, стыкуемые и изменяемые по размеру панели. Подходит для разработки веб-приложений, где требуется гибкая и настраиваемая рабочая область.
👉 @sWebDev
Dockview — JavaScript-библиотека для создания сложных панельных интерфейсов, как в современных IDE. Поддерживает перемещаемые, стыкуемые и изменяемые по размеру панели. Подходит для разработки веб-приложений, где требуется гибкая и настраиваемая рабочая область.
👉 @sWebDev
❤2
Media is too big
VIEW IN TELEGRAM
Glow effect to LineBasicMaterial without bloom
Эффект свечения для линий без Bloom-фильтра в Three.js.
👉 @sWebDev
Эффект свечения для линий без Bloom-фильтра в Three.js.
👉 @sWebDev
❤3👍1
Оптимизация TypeScript-типов в больших проектах
В крупных проектах проверка типов в TypeScript может стать серьёзным узким местом, замедляя сборку и работу IDE. Статья разбирает неочевидные проблемы производительности, связанные со сложными типами, и предлагает конкретные подходы к их оптимизации. Полезно для тех, кто работает с большими кодовыми базами и ищет способы ускорить работу с TypeScript.
👉 @web_craft | #frontend
В крупных проектах проверка типов в TypeScript может стать серьёзным узким местом, замедляя сборку и работу IDE. Статья разбирает неочевидные проблемы производительности, связанные со сложными типами, и предлагает конкретные подходы к их оптимизации. Полезно для тех, кто работает с большими кодовыми базами и ищет способы ускорить работу с TypeScript.
👉 @web_craft | #frontend
❤2👎1
Probot
Probot — фреймворк для создания GitHub-приложений на JavaScript. Предназначен для автоматизации рабочих процессов и задач в репозиториях, например, для комментирования pull-реквестов или проверки стиля кода. Подходит для команд и разработчиков, стремящихся упростить управление репозиториями и рутинные операции.
👉 @sWebDev
Probot — фреймворк для создания GitHub-приложений на JavaScript. Предназначен для автоматизации рабочих процессов и задач в репозиториях, например, для комментирования pull-реквестов или проверки стиля кода. Подходит для команд и разработчиков, стремящихся упростить управление репозиториями и рутинные операции.
👉 @sWebDev
❤2
Механизм защиты данных в RSC
Какую проблему решают функции
Забыли? Вернитесь к посту от30.06.2025 .
👉 @sWebDev
Какую проблему решают функции
taintObjectReference и taintUniqueValue?Забыли? Вернитесь к посту от
👉 @sWebDev
❤2