Chroma.js
Небольшая JavaScript-библиотека без зависимостей (размером около 13,5 КБ), предназначенная для различных цветовых преобразований и создания цветовых шкал. Позволяет считывать цвета из различных форматов, анализировать и манипулировать ими, а также генерировать цветовые палитры для визуализации данных.
👉 @sWebDev
Небольшая JavaScript-библиотека без зависимостей (размером около 13,5 КБ), предназначенная для различных цветовых преобразований и создания цветовых шкал. Позволяет считывать цвета из различных форматов, анализировать и манипулировать ими, а также генерировать цветовые палитры для визуализации данных.
👉 @sWebDev
Почему я не буду использовать JSDOM
В статье автор анализирует историю и ограничения JSDOM — библиотеки, созданной в 2010 году для эмуляции браузерной среды в Node.js. Несмотря на её популярность в тестировании фронтенд-кода, JSDOM сталкивается с проблемами несовершенной эмуляции браузера в Node.js, что приводит к ошибкам при обработке событий. Автор предлагает отказаться от использования JSDOM в пользу современных инструментов, обеспечивающих более точное соответствие реальным условиям работы приложений.
👉 @sWebDev
В статье автор анализирует историю и ограничения JSDOM — библиотеки, созданной в 2010 году для эмуляции браузерной среды в Node.js. Несмотря на её популярность в тестировании фронтенд-кода, JSDOM сталкивается с проблемами несовершенной эмуляции браузера в Node.js, что приводит к ошибкам при обработке событий. Автор предлагает отказаться от использования JSDOM в пользу современных инструментов, обеспечивающих более точное соответствие реальным условиям работы приложений.
👉 @sWebDev
noUiSlider
Лёгкий и доступный JavaScript-слайдер диапазона с поддержкой мультитач и клавиатуры. Полностью анимирован с использованием GPU, что обеспечивает высокую производительность даже на старых устройствах. Идеально подходит для адаптивных дизайнов и не имеет внешних зависимостей.
👉 @sWebDev
Лёгкий и доступный JavaScript-слайдер диапазона с поддержкой мультитач и клавиатуры. Полностью анимирован с использованием GPU, что обеспечивает высокую производительность даже на старых устройствах. Идеально подходит для адаптивных дизайнов и не имеет внешних зависимостей.
👉 @sWebDev
Работа с CdkVirtualScrollViewport
Когда
Забыли? Вернитесь к посту от24.02.2025 .
👉 @sWebDev
Когда
CdkVirtualScrollViewport
обновляет элементы списка?Забыли? Вернитесь к посту от
👉 @sWebDev
Когда CdkVirtualScrollViewport обновляет элементы списка?
Anonymous Quiz
15%
1. При каждом изменении данных.
20%
2. При изменении trackBy.
56%
3. Только при прокрутке.
9%
4. При изменении размеров экрана.
Предзагрузка всех модулей в Angular
В Angular модули загружаются лениво (
Пример:
Этот код заставляет Angular загружать все модули в фоне после загрузки главного модуля. Это уменьшает задержки при переходах, но увеличивает начальную загрузку.
👉 @sWebDev
В Angular модули загружаются лениво (
lazy loading
), чтобы не перегружать приложение. Однако, если модули нужны часто, можно предзагрузить их заранее с preloadAllModules
. Пример:
import { NgModule } from '@angular/core';
import { RouterModule, Routes, PreloadAllModules } from '@angular/router';
const routes: Routes = [
{ path: 'dashboard', loadChildren: () => import('./dashboard/dashboard.module').then(m => m.DashboardModule) },
{ path: 'profile', loadChildren: () => import('./profile/profile.module').then(m => m.ProfileModule) }
];
@NgModule({
imports: [RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })],
exports: [RouterModule]
})
export class AppRoutingModule {}
Этот код заставляет Angular загружать все модули в фоне после загрузки главного модуля. Это уменьшает задержки при переходах, но увеличивает начальную загрузку.
👉 @sWebDev
Glider.js
Glider.js — это компактный и гибкий карусельный слайдер, который не требует jQuery и работает плавно даже на мобильных устройствах. В отличие от тяжелых аналогов, он предлагает нативную поддержку перелистывания, кастомизацию через CSS и API для управления поведением.
👉 @sWebDev
Glider.js — это компактный и гибкий карусельный слайдер, который не требует jQuery и работает плавно даже на мобильных устройствах. В отличие от тяжелых аналогов, он предлагает нативную поддержку перелистывания, кастомизацию через CSS и API для управления поведением.
👉 @sWebDev
Сохранение данных формы в React: современный подход с Nuqs
В веб-разработке часто требуется сохранять состояние форм, чтобы предотвратить потерю данных при обновлении страницы или поделиться заполненной формой с другими. Традиционные методы, такие как
👉 @sWebDev
В веб-разработке часто требуется сохранять состояние форм, чтобы предотвратить потерю данных при обновлении страницы или поделиться заполненной формой с другими. Традиционные методы, такие как
localStorage
, имеют ограничения, включая невозможность совместного использования данных и отсутствие встроенной валидации. Nuqs предлагает современное решение, позволяя сохранять состояние формы в URL с поддержкой типизации и валидации. Это упрощает обмен данными и устраняет необходимость в серверной инфраструктуре. Если вы хотите улучшить управление состоянием форм в своих React-приложениях, ознакомьтесь с возможностями Nuqs.👉 @sWebDev
Vanilla-tilt.js
Vanilla-tilt.js — это легковесная библиотека, позволяющая добавлять эффект 3D-наклона к элементам на странице. Она реагирует на движения мыши, создавая плавные анимации без лишних зависимостей.
👉 @sWebDev
Vanilla-tilt.js — это легковесная библиотека, позволяющая добавлять эффект 3D-наклона к элементам на странице. Она реагирует на движения мыши, создавая плавные анимации без лишних зависимостей.
👉 @sWebDev
Какой первый аргумент передаётся в FormControl?
Что передаётся в
Забыли? Вернитесь к посту от03.03.2025 .
👉 @sWebDev
Что передаётся в
FormControl
первым аргументом?Забыли? Вернитесь к посту от
👉 @sWebDev
Что передаётся в FormControl первым аргументом?
Anonymous Quiz
43%
Название поля.
14%
Тип данных.
12%
Валидатор.
31%
Начальное значение.
Управление асинхронным рендерингом
Метод
Например, кнопка изменяет текст элемента, и нам нужно получить его новую ширину до следующего рендера:
👉 @sWebDev
Метод
flushSync()
позволяет немедленно обновить состояние и выполнить ререндер, обходя пакетную обработку обновлений. Это полезно, когда требуется мгновенно обновить интерфейс перед выполнением других операций, например, чтением размеров DOM. Например, кнопка изменяет текст элемента, и нам нужно получить его новую ширину до следующего рендера:
import { useState } from "react";
import { flushSync } from "react-dom";
function Example() {
const [text, setText] = useState("Нажми меня");
const spanRef = useRef(null);
function handleClick() {
flushSync(() => {
setText("Текст изменился!");
});
console.log("Ширина:", spanRef.current.offsetWidth);
}
return (
<div>
<button onClick={handleClick}>Изменить</button>
<span ref={spanRef}>{text}</span>
</div>
);
}
flushSync()
гарантирует, что offsetWidth
обновится после изменения текста, а не после следующего рендера. 👉 @sWebDev