#blog
В
Кроме того,
Основные причины:
- OnPush давно рекомендовался как лучшая практика.
- Упрощение настройки и поведения фреймворка.
- Поддержка zoneless-режима становится стандартом.
Angular планирует выпустить эти изменения в мае 2026 года в версии v22.
Статья: https://habr.com/ru/news/989852/
В
Angular v22 будет изменена стандартная стратегия обнаружения изменений (Change Detection). Вместо Default по умолчанию будет использоваться OnPush. Это решение направлено на улучшение производительности и соответствие современным практикам разработки без использования Zone.js (zoneless-режим).Кроме того,
ChangeDetectionStrategy.Default будет переименован в ChangeDetectionStrategy.Eager, чтобы точнее отражать своё поведение — агрессивную проверку изменений. Существующие проекты будут автоматически обновлены, и для сохранения прежнего поведения будет использоваться Eager.Основные причины:
- OnPush давно рекомендовался как лучшая практика.
- Упрощение настройки и поведения фреймворка.
- Поддержка zoneless-режима становится стандартом.
Angular планирует выпустить эти изменения в мае 2026 года в версии v22.
Статья: https://habr.com/ru/news/989852/
Хабр
Прощай, Default: Angular меняет стандартную стратегию на OnPush и вводит Eager
Коллеги, привет! От команды Angular пришли отличные новости: в 22-й версии стратегия OnPush станет стандартной. По этому поводу разработчики выпустили новый RFC (Request for Comments). Ниже я...
👍3❤1
#news
Мы много говорим о преимуществах сигнального стора, но стоит ли полностью отказываться от NgRx?
NgRx - мощный инструмент, но для большинства Angular-приложений он давно стал излишним. Actions, reducers, selectors, effects ради простого UI. Angular Signals меняют правила игры. Сигналы позволяют создавать реактивное и масштабируемое управление состоянием. Иммутабельные обновления через update(), производные значения через computed(), сайд-эффекты через effect() - всё типизировано, предсказуемо и легко тестируется.
В этой статье рассказывается:
- как заменить NgRx-сторы на Signals без потери контроля;
- в каких случаях разумно использовать NgRx;
- как использовать гибридный подход (NgRx для глобального стейта, сигналы для UI);
- как за ~100 строк собрать production-ready todo-приложение;
- как получить ускорение рендеринга в 2-3 раза и сократить кодовую базу примерно на 50%.
Ссылка на статью: https://javascript.plainenglish.io/how-to-replace-over-complicated-ngrx-stores-with-angular-signals-without-losing-control-ee680938942b
Мы много говорим о преимуществах сигнального стора, но стоит ли полностью отказываться от NgRx?
NgRx - мощный инструмент, но для большинства Angular-приложений он давно стал излишним. Actions, reducers, selectors, effects ради простого UI. Angular Signals меняют правила игры. Сигналы позволяют создавать реактивное и масштабируемое управление состоянием. Иммутабельные обновления через update(), производные значения через computed(), сайд-эффекты через effect() - всё типизировано, предсказуемо и легко тестируется.
В этой статье рассказывается:
- как заменить NgRx-сторы на Signals без потери контроля;
- в каких случаях разумно использовать NgRx;
- как использовать гибридный подход (NgRx для глобального стейта, сигналы для UI);
- как за ~100 строк собрать production-ready todo-приложение;
- как получить ускорение рендеринга в 2-3 раза и сократить кодовую базу примерно на 50%.
Ссылка на статью: https://javascript.plainenglish.io/how-to-replace-over-complicated-ngrx-stores-with-angular-signals-without-losing-control-ee680938942b
Medium
How To Replace Over-Complicated NgRx Stores With Angular Signals — Without Losing Control
Hey, picture this: you’re knee-deep in an Angular app, drowning in NgRx actions, reducers, effects, and selectors just to flip a simple…
🔥3❤1👍1👎1
#blog
Вышел ESLint v10.0.0 — крупное обновление с новыми функциями и критическими изменениями.
Основные моменты:
- Поддержка устаревших версий Node.js прекращена (до v20.19.0, v21.x, v23.x).
- Отказ от
- Новый алгоритм поиска конфигурационных файлов: поиск начинается от каждого линтуемого файла, что удобно для монорепозиториев.
- Отслеживание JSX-ссылок: теперь JSX-элементы корректно обрабатываются в области видимости.
- Улучшения в RuleTester: добавлены новые опции для более строгого тестирования правил, а также улучшена отладка.
- Новая опция countThis в правиле max-params: позволяет игнорировать this при подсчёте параметров функции.
- Обновлена конфигурация
- Удалены устаревшие методы и свойства, включая context.getCwd(), SourceCode.getTokenOrCommentBefore() и другие.
- Обновлён минимальный требуемый jiti до 2.2.0 для корректной работы с TypeScript-конфигами.
- Улучшена поддержка цветового вывода через флаги --color и --no-color.
Статья: https://eslint.org/blog/2026/02/eslint-v10.0.0-released/
Вышел ESLint v10.0.0 — крупное обновление с новыми функциями и критическими изменениями.
Основные моменты:
- Поддержка устаревших версий Node.js прекращена (до v20.19.0, v21.x, v23.x).
- Отказ от
eslintrc-конфигураций: удалены все методы и файлы, связанные с eslintrc. Теперь используется только flat-конфигурация.- Новый алгоритм поиска конфигурационных файлов: поиск начинается от каждого линтуемого файла, что удобно для монорепозиториев.
- Отслеживание JSX-ссылок: теперь JSX-элементы корректно обрабатываются в области видимости.
- Улучшения в RuleTester: добавлены новые опции для более строгого тестирования правил, а также улучшена отладка.
- Новая опция countThis в правиле max-params: позволяет игнорировать this при подсчёте параметров функции.
- Обновлена конфигурация
eslint:recommended: добавлены важные правила.- Удалены устаревшие методы и свойства, включая context.getCwd(), SourceCode.getTokenOrCommentBefore() и другие.
- Обновлён минимальный требуемый jiti до 2.2.0 для корректной работы с TypeScript-конфигами.
- Улучшена поддержка цветового вывода через флаги --color и --no-color.
Статья: https://eslint.org/blog/2026/02/eslint-v10.0.0-released/
eslint.org
ESLint v10.0.0 released - ESLint - Pluggable JavaScript Linter
A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease.
👍5❤1
#blog
Команда Webpack выпустила Roadmap 2026. Что внутри:
CSS Modules без плагинов — интеграция в ядро webpack, экспериментальная поддержка в 2026, стабильная — в webpack 6.
Universal target — поддержка запуска кода в Node.js, Deno, Bun и браузере с выводом в ESM.
TypeScript без загрузчиков — отказ от ts-loader, улучшение встроенной поддержки.
HTML как точка входа — интеграция html-webpack-plugin в ядро webpack.
Поддержка нескольких рантаймов — улучшение совместимости с Deno, Bun и браузером, уменьшение зависимости от Node.js.
Lazy Barrel Optimization — ускорение сборки за счёт отложенной обработки неиспользуемых модулей.
Единый плагин минификации — объединение terser, css-minimizer и других в один minimizer-webpack-plugin.
Улучшение инструментов разработки — обновление CLI, упрощение dev-сервера и мидлварей.
Автоматическая документация — генерация из типов и схем для точности и актуальности.
Многопоточный API — параллелизация сборки, вдохновлённая thread-loader.
Статья - https://webpack.js.org/blog/2026-04-02-roadmap-2026/
Команда Webpack выпустила Roadmap 2026. Что внутри:
CSS Modules без плагинов — интеграция в ядро webpack, экспериментальная поддержка в 2026, стабильная — в webpack 6.
Universal target — поддержка запуска кода в Node.js, Deno, Bun и браузере с выводом в ESM.
TypeScript без загрузчиков — отказ от ts-loader, улучшение встроенной поддержки.
HTML как точка входа — интеграция html-webpack-plugin в ядро webpack.
Поддержка нескольких рантаймов — улучшение совместимости с Deno, Bun и браузером, уменьшение зависимости от Node.js.
Lazy Barrel Optimization — ускорение сборки за счёт отложенной обработки неиспользуемых модулей.
Единый плагин минификации — объединение terser, css-minimizer и других в один minimizer-webpack-plugin.
Улучшение инструментов разработки — обновление CLI, упрощение dev-сервера и мидлварей.
Автоматическая документация — генерация из типов и схем для точности и актуальности.
Многопоточный API — параллелизация сборки, вдохновлённая thread-loader.
Статья - https://webpack.js.org/blog/2026-04-02-roadmap-2026/
❤2
#blog
Сегодня снова поговорим про сигнальные формы - новый экспериментальный API уже здесь, но есть важный нюанс. По умолчанию сигнальные формы не добавляют привычные CSS-классы состояния (ng-valid, ng-invalid, ng-touched). Если ваши стили завязаны, например, на .ng-invalid - при миграции можно неожиданно "сломать" UI.
В статье разбирается следующее:
- как вернуть классическое поведение через provideSignalFormsConfig
- как настроить собственные динамические классы
- почему использование объекта конфигурации - это продуманное решение с точки зрения дизайна API
Ссылка на статью: https://angularexperts.ch/blog/signal-forms-config
Сегодня снова поговорим про сигнальные формы - новый экспериментальный API уже здесь, но есть важный нюанс. По умолчанию сигнальные формы не добавляют привычные CSS-классы состояния (ng-valid, ng-invalid, ng-touched). Если ваши стили завязаны, например, на .ng-invalid - при миграции можно неожиданно "сломать" UI.
В статье разбирается следующее:
- как вернуть классическое поведение через provideSignalFormsConfig
- как настроить собственные динамические классы
- почему использование объекта конфигурации - это продуманное решение с точки зрения дизайна API
Ссылка на статью: https://angularexperts.ch/blog/signal-forms-config
Angular Experts
Angular Signal Forms Config - Angular Experts
Learn how to configure Angular Signal Forms to bring back the classic CSS state classes (like ng-valid, ng-invalid, and ng-touched)—either for backward compatibility with existing styles or to unlock new customization, like emitting your own tailored state…
👍2🔥2
#blog
DevTools Chrome 145: фокус на стабильность, производительность и улучшение интерфейса.
- MCP-сервер обновлён до v0.14.0 с авто-подключением, унифицированной эмуляцией и сохранением логов.
- В Performance панели видны "мягкие навигации" для SPA.
- Построчный профилинг в Sources стал точнее, особенно для минифицированного кода.
- Ускорена работа с трассировками в Performance.
- В Network добавлена колонка "Render blocking" для анализа ресурсов.
- Request Conditions теперь с поддержкой ограничения скорости по умолчанию.
- Поддержка @starting-style включена для отладки анимаций.
- AI Assistance поддерживает вставку изображений.
- Улучшена доступность и мелкие элементы интерфейса.
Статья: https://developer.chrome.com/blog/new-in-devtools-145?hl=en
DevTools Chrome 145: фокус на стабильность, производительность и улучшение интерфейса.
- MCP-сервер обновлён до v0.14.0 с авто-подключением, унифицированной эмуляцией и сохранением логов.
- В Performance панели видны "мягкие навигации" для SPA.
- Построчный профилинг в Sources стал точнее, особенно для минифицированного кода.
- Ускорена работа с трассировками в Performance.
- В Network добавлена колонка "Render blocking" для анализа ресурсов.
- Request Conditions теперь с поддержкой ограничения скорости по умолчанию.
- Поддержка @starting-style включена для отладки анимаций.
- AI Assistance поддерживает вставку изображений.
- Улучшена доступность и мелкие элементы интерфейса.
Статья: https://developer.chrome.com/blog/new-in-devtools-145?hl=en
Chrome for Developers
What's new in DevTools (Chrome 145) | Blog | Chrome for Developers
Auto-connect and emulation for Chrome DevTools MCP, soft navigation traces, precise line-level profiling, and a render-blocking network column
👍2❤1
#blog
Angular постепенно отказывается от Zone.js — начиная с Angular 21 режим Zoneless становится новым стандартом. Что это значит для существующих приложений и как безопасно перейти на новую модель?
В статье разбирается:
- зачем вообще мигрировать на Zoneless
- почему OnPush и сигналы сильно упрощают переход
- как использовать unit-тесты, чтобы заранее проверить совместимость компонентов
Главная мысль: миграцию можно делать постепенно — без рискованных изменений в кодовой базе.
Ссылка: https://medium.com/javascript-in-plain-english/how-to-migrate-your-angular-app-to-zoneless-9f9350040e19
Angular постепенно отказывается от Zone.js — начиная с Angular 21 режим Zoneless становится новым стандартом. Что это значит для существующих приложений и как безопасно перейти на новую модель?
В статье разбирается:
- зачем вообще мигрировать на Zoneless
- почему OnPush и сигналы сильно упрощают переход
- как использовать unit-тесты, чтобы заранее проверить совместимость компонентов
Главная мысль: миграцию можно делать постепенно — без рискованных изменений в кодовой базе.
Ссылка: https://medium.com/javascript-in-plain-english/how-to-migrate-your-angular-app-to-zoneless-9f9350040e19
Medium
How to migrate your Angular app to Zoneless
Learn how to gradually migrate your Angular app to Zoneless and keep your codebase future-proof with practical tips.
👍3❤🔥2🔥2
#blog
Команда NodeJs опубликовала обновление графика релизов. Вкратце:
1. Новый график релизов — начиная с Node.js 27.x: 1 мажорный релиз в год (вместо 2), каждый релиз становится LTS.
2. Alpha-релизы — доступны с октября по март, разрешены семантически мажорные изменения, предназначены для разработчиков библиотек.
3. Три фазы релиза: Alpha (6 мес), Current (6 мес), LTS (30 мес), всего поддержка — 36 месяцев.
4. Упрощение для мейнтейнеров — снижение нагрузки за счёт сокращения активных версий и упрощения backporting.
5. Стабильность для бизнеса — предсказуемый график обновлений: релиз в апреле, LTS в октябре.
6. Без odd/even разделения — все версии — LTS, упрощено восприятие для новичков.
7. Интеграция с CITGM — тестирование с популярными пакетами для выявления проблем до релиза.
8. Версионирование по году — версия 27 в 2027, 28 — в 2028 и т.д.
9. Без изменений в LTS-поддержке — 30 месяцев, миграционные окна сохранены.
10. V8 остаётся актуальным — обновления движка не старше 6 месяцев.
11. Node.js 26 — последний по старой схеме, LTS в октябре 2026, EOL в апреле 2029.
12. Node.js 27 — первый релиз по новой схеме, Alpha с октября 2026, LTS с октября 2027, EOL в апреле 2030.
Статья: https://nodejs.org/en/blog/announcements/evolving-the-nodejs-release-schedule
Команда NodeJs опубликовала обновление графика релизов. Вкратце:
1. Новый график релизов — начиная с Node.js 27.x: 1 мажорный релиз в год (вместо 2), каждый релиз становится LTS.
2. Alpha-релизы — доступны с октября по март, разрешены семантически мажорные изменения, предназначены для разработчиков библиотек.
3. Три фазы релиза: Alpha (6 мес), Current (6 мес), LTS (30 мес), всего поддержка — 36 месяцев.
4. Упрощение для мейнтейнеров — снижение нагрузки за счёт сокращения активных версий и упрощения backporting.
5. Стабильность для бизнеса — предсказуемый график обновлений: релиз в апреле, LTS в октябре.
6. Без odd/even разделения — все версии — LTS, упрощено восприятие для новичков.
7. Интеграция с CITGM — тестирование с популярными пакетами для выявления проблем до релиза.
8. Версионирование по году — версия 27 в 2027, 28 — в 2028 и т.д.
9. Без изменений в LTS-поддержке — 30 месяцев, миграционные окна сохранены.
10. V8 остаётся актуальным — обновления движка не старше 6 месяцев.
11. Node.js 26 — последний по старой схеме, LTS в октябре 2026, EOL в апреле 2029.
12. Node.js 27 — первый релиз по новой схеме, Alpha с октября 2026, LTS с октября 2027, EOL в апреле 2030.
Статья: https://nodejs.org/en/blog/announcements/evolving-the-nodejs-release-schedule
nodejs.org
Node.js — Evolving the Node.js Release Schedule
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
👍3
#blog
Вышел Vite 8.0. Что нового:
1. Vite 8 с Rolldown — новый Rust-бандлер вместо Rollup + esbuild, в 10–30× быстрее, с полной совместимостью плагинов.
2. Расширенные возможности — full bundle mode, гибкое разделение чанков, Module Federation, кэширование на уровне модулей.
3. Vite Plugin Registry — каталог плагинов на registry.vite.dev.
4. Ускорение сборки — до 64% быстрее в реальных проектах.
5. Единая toolchain — Vite, Rolldown и Oxc работают слаженно.
6. Новые фичи — встроенные devtools, tsconfig paths, emitDecoratorMetadata, WASM в SSR, логирование в терминал.
7. @vitejs/plugin-react v6 — на Oxc, без Babel, поддержка React Compiler.
8. Поддержка Node.js — Node.js 20.19+ и 22.12+.
9. Больший размер — +15 МБ из-за lightningcss и Rolldown.
10. Постепенная миграция — через rolldown-vite на Vite 7.
11. Благодарности Rollup и esbuild — ключевые проекты для старта Vite.
Статья - https://vite.dev/blog/announcing-vite8
Вышел Vite 8.0. Что нового:
1. Vite 8 с Rolldown — новый Rust-бандлер вместо Rollup + esbuild, в 10–30× быстрее, с полной совместимостью плагинов.
2. Расширенные возможности — full bundle mode, гибкое разделение чанков, Module Federation, кэширование на уровне модулей.
3. Vite Plugin Registry — каталог плагинов на registry.vite.dev.
4. Ускорение сборки — до 64% быстрее в реальных проектах.
5. Единая toolchain — Vite, Rolldown и Oxc работают слаженно.
6. Новые фичи — встроенные devtools, tsconfig paths, emitDecoratorMetadata, WASM в SSR, логирование в терминал.
7. @vitejs/plugin-react v6 — на Oxc, без Babel, поддержка React Compiler.
8. Поддержка Node.js — Node.js 20.19+ и 22.12+.
9. Больший размер — +15 МБ из-за lightningcss и Rolldown.
10. Постепенная миграция — через rolldown-vite на Vite 7.
11. Благодарности Rollup и esbuild — ключевые проекты для старта Vite.
Статья - https://vite.dev/blog/announcing-vite8
vitejs
Vite 8.0 is out!
Vite 8 Release Announcement
🔥3
#blog
Многие уже могли увидеть, что в Angular 21.2 добавили поддержку чистых JS-функций в шаблонах. В данной статье эта функциональность рассматривается на примерах, а если тезисно:
- Можно писать инлайновые функции без объявления в компоненте.
- Поддерживаются map, filter, find, update сигналов и передача функций.
- Есть ограничения: нельзя писать многострочные функции, применять пайпы внутри них (только к результату) и возвращать функции.
- Плюс: меньше кода. Минусы: сложность шаблонов, возможное падение производительности.
- Автор все-таки советует использовать computed или пайпы вместо функций в шаблонах.
Статья: https://habr.com/ru/articles/1013922/
Многие уже могли увидеть, что в Angular 21.2 добавили поддержку чистых JS-функций в шаблонах. В данной статье эта функциональность рассматривается на примерах, а если тезисно:
- Можно писать инлайновые функции без объявления в компоненте.
- Поддерживаются map, filter, find, update сигналов и передача функций.
- Есть ограничения: нельзя писать многострочные функции, применять пайпы внутри них (только к результату) и возвращать функции.
- Плюс: меньше кода. Минусы: сложность шаблонов, возможное падение производительности.
- Автор все-таки советует использовать computed или пайпы вместо функций в шаблонах.
Статья: https://habr.com/ru/articles/1013922/
Хабр
Чистые функции в html шаблонах Angular
Начиная с версии 21.2 Angular внедрил поддержку чистых JS функций в html шаблонах. Теперь можно инлайнить функции без необходимости определения их в классе компонента. Фича, на мой взгляд, довольно...
❤4
#blog
Вышел анонс
Статус релиза: TypeScript 6.0 — переходная версия, последняя на текущей кодовой базе (JS). Следующая версия 7.0 будет полностью переписана на Go для скорости и многопоточности.
Новые возможности:
- Поддержка подпутей импорта, начинающихся с #/ (аналог @/ в бандлерах).
- Добавлены типы для Temporal API (работа с датой/временем) и методов Map.getOrInsert (upsert).
- Встроенная поддержка RegExp.escape.
- Библиотека dom теперь включает итерируемые коллекции по умолчанию (не нужно отдельно подключать dom.iterable).
- Улучшен вывод типов для функций без явного this (меньше контекстной зависимости).
Изменения по умолчанию (Breaking Changes):
-
- module по умолчанию — esnext, target — es2025.
- types по умолчанию — пустой массив [] (нужно явно указывать, например, ["node"]), что ускоряет сборку.
- rootDir теперь равен папке с tsconfig.json.
Устаревшие функции (будут удалены в 7.0):
- Целевая версия es5 и флаг --downlevelIteration.
- Стратегия
- Форматы модулей: amd, umd, systemjs, none.
- Опция
- Синтаксис module для неймспейсов (оставлен только namespace).
- Импорт с asserts (заменен на with).
- Отключение
Миграция: Для подготовки к TS 7.0 рекомендуется исправить все предупреждения о депрекации в версии 6.0.
Статья - https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/
Вышел анонс
TypeScript 6.0. Что внутри:Статус релиза: TypeScript 6.0 — переходная версия, последняя на текущей кодовой базе (JS). Следующая версия 7.0 будет полностью переписана на Go для скорости и многопоточности.
Новые возможности:
- Поддержка подпутей импорта, начинающихся с #/ (аналог @/ в бандлерах).
- Добавлены типы для Temporal API (работа с датой/временем) и методов Map.getOrInsert (upsert).
- Встроенная поддержка RegExp.escape.
- Библиотека dom теперь включает итерируемые коллекции по умолчанию (не нужно отдельно подключать dom.iterable).
- Улучшен вывод типов для функций без явного this (меньше контекстной зависимости).
Изменения по умолчанию (Breaking Changes):
-
strict, noUncheckedSideEffectImports теперь true.- module по умолчанию — esnext, target — es2025.
- types по умолчанию — пустой массив [] (нужно явно указывать, например, ["node"]), что ускоряет сборку.
- rootDir теперь равен папке с tsconfig.json.
Устаревшие функции (будут удалены в 7.0):
- Целевая версия es5 и флаг --downlevelIteration.
- Стратегия
moduleResolution: node (заменена на nodenext или bundler).- Форматы модулей: amd, umd, systemjs, none.
- Опция
--outFile (рекомендуется использовать внешние бандлеры).- Синтаксис module для неймспейсов (оставлен только namespace).
- Импорт с asserts (заменен на with).
- Отключение
esModuleInterop и allowSyntheticDefaultImports (теперь всегда включены).Миграция: Для подготовки к TS 7.0 рекомендуется исправить все предупреждения о депрекации в версии 6.0.
Статья - https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/
Microsoft News
Announcing TypeScript 6.0
TypeScript 6.0 is now available! TypeScript 6 is a stepping-stone release, aligning with the upcoming native-speed 7.0 release.
1👍3
#blog
Angular 22: debounce и debounced
Если вы работаете с сигналами в Angular - самое время разобраться, как теперь правильно выполнять debounce без RxJS.
В статье:
- почему в Angular теперь два debounce API:
- чем они отличаются и где какой использовать
- как на самом деле работает debounce «под капотом»
Материал подойдёт для тех, кто уже знаком с Signals, Resource API и сигнальными формами.
Ссылка: https://levelup.gitconnected.com/angular-22-the-power-of-debound-and-debounced-apis-c41e33c0a18e
Angular 22: debounce и debounced
Если вы работаете с сигналами в Angular - самое время разобраться, как теперь правильно выполнять debounce без RxJS.
В статье:
- почему в Angular теперь два debounce API:
debounce() и debounced()- чем они отличаются и где какой использовать
- как на самом деле работает debounce «под капотом»
Материал подойдёт для тех, кто уже знаком с Signals, Resource API и сигнальными формами.
Ссылка: https://levelup.gitconnected.com/angular-22-the-power-of-debound-and-debounced-apis-c41e33c0a18e
Medium
Angular 22 — The Power Of Debounce and Debounced APIs 🔥
Understanding how they work, how they differ, and what happens under the hood
1🔥7❤1
#blog
На сегодня - любопытная статья про способы предзагрузки изображений в JS, с плюсами/минусами, примерами и аргументацией. Ну а если сократить до сухих фактов:
-
-
- Скрытый
-
Статья: https://macarthur.me/posts/preloading-images/
На сегодня - любопытная статья про способы предзагрузки изображений в JS, с плюсами/минусами, примерами и аргументацией. Ну а если сократить до сухих фактов:
-
new Image(): Простой способ с доступом к размерам и событию загрузки, но ненадежен при запрете кэширования на сервере (no-store).-
<link rel="preload">: Лучший выбор. Гарантированно кэширует изображение (игнорируя no-store) и предотвращает дублирование запросов.- Скрытый
<div>: Работает только с visibility: hidden (не `display: none`). Считается «костылем» без особых преимуществ.-
Cache API и fetch(): Дают полный программный контроль и работу с данными в памяти, но требуют ручной очистки кэша или хранения Blob-объектов.Статья: https://macarthur.me/posts/preloading-images/
Alex MacArthur
Your options for preloading images with JavaScript
There are a number of ways to preload an image on demand with JavaScript — each with their own strengths & drawbacks. Let's explore them.
❤3
#blog
Angular 22: debounce и debounced
В дополнение к статье прошлой недели о том, как работают
В материале разбираются:
- Поиск по мере ввода (search-as-you-type): использование
- Проверка доступности username
- Автодополнение адреса
- Использование кастомных debouncer-функций
Материал подойдёт для тех, кто уже знаком с Signals, Resource API и сигнальными формами.
Ссылка: https://famzil.medium.com/meet-angulars-debounce-debounced-apis-in-action-%EF%B8%8F-e096251ffc98
Angular 22: debounce и debounced
В дополнение к статье прошлой недели о том, как работают
debounce() и debounced() "под капотом" предлагаем к чтению вторую часть, посвящённую реальным кейсам использования новых API. В материале разбираются:
- Поиск по мере ввода (search-as-you-type): использование
debounced() API для снижения количества HTTP-запросов- Проверка доступности username
- Автодополнение адреса
- Использование кастомных debouncer-функций
Материал подойдёт для тех, кто уже знаком с Signals, Resource API и сигнальными формами.
Ссылка: https://famzil.medium.com/meet-angulars-debounce-debounced-apis-in-action-%EF%B8%8F-e096251ffc98
Medium
Meet Angular’s Debounce & Debounced APIs in Action ⚡️🔥
Practical Real-World Use Cases
❤5🔥3❤🔥1
#blog
Статья "Делаем сайт видимым для LLM: 6 рабочих техник, 8 - нерабочих". Сразу небольшой дисклеймер: значительная часть описанного является скорее договоренностью, чем стандартом. Но если изложить основную суть:
- /llms.txt — файл-карта сайта в формате Markdown для навигации LLM.
- .md роуты — чистые версии страниц с контентом без HTML-шума.
- Link-теги и заголовки — указание на Markdown-версию через <link> и HTTP-заголовки.
- Скрытые подсказки — невидимый блок в DOM с прямой ссылкой на .md для чат-ботов.
- /llms-full.txt — полный текст сайта в одном файле для быстрого контекста.
- Content Negotiation — серверная отдача Markdown по заголовку Accept: text/markdown.
- Аналитика — отслеживание запросов от AI-ботов к новым эндпоинтам.
- Бесполезные методы — мета-теги ai-content, JSON-LD, кнопки переключения и User-Agent сниффинг не работают.
- Проверка robots.txt — убедитесь, что боты (GPTBot, ClaudeBot) не заблокированы.
- Приоритет внедрения — сначала llms.txt и .md, затем заголовки и negotiation.
Статья - https://evilmartians.com/chronicles/how-to-make-your-website-visible-to-llms
Статья "Делаем сайт видимым для LLM: 6 рабочих техник, 8 - нерабочих". Сразу небольшой дисклеймер: значительная часть описанного является скорее договоренностью, чем стандартом. Но если изложить основную суть:
- /llms.txt — файл-карта сайта в формате Markdown для навигации LLM.
- .md роуты — чистые версии страниц с контентом без HTML-шума.
- Link-теги и заголовки — указание на Markdown-версию через <link> и HTTP-заголовки.
- Скрытые подсказки — невидимый блок в DOM с прямой ссылкой на .md для чат-ботов.
- /llms-full.txt — полный текст сайта в одном файле для быстрого контекста.
- Content Negotiation — серверная отдача Markdown по заголовку Accept: text/markdown.
- Аналитика — отслеживание запросов от AI-ботов к новым эндпоинтам.
- Бесполезные методы — мета-теги ai-content, JSON-LD, кнопки переключения и User-Agent сниффинг не работают.
- Проверка robots.txt — убедитесь, что боты (GPTBot, ClaudeBot) не заблокированы.
- Приоритет внедрения — сначала llms.txt и .md, затем заголовки и negotiation.
Статья - https://evilmartians.com/chronicles/how-to-make-your-website-visible-to-llms
evilmartians.com
Making your site visible to LLMs: 6 techniques that work, 8 that don't—Martian Chronicles, Evil Martians’ team blog
Most AI SEO advice is unproven. We tested what ChatGPT, Claude, and Perplexity actually read on our own site. Six LLM visibility techniques that worked, eight that didn't, and the metrics to tell the difference.
#blog
Инструмент для упрощения процесса конфигурирования nginx: NginxForge. Данная статья, по сути, является саморекламой от автора, но я уверен, что в какой-то момент вам это может пригодиться.
Проблема: Настройка nginx сопряжена с типовыми ошибками (слэши в proxy_pass, устаревший TLS, лишняя информация в заголовках), которые сложно отловить без глубокого погружения.
Решение: Инструмент NginxForge генерирует готовые конфиги под популярные сценарии.
Главные фишки:
- Пояснения к каждой директиве на русском с предупреждениями о рисках.
- Реальная проверка синтаксиса через nginx -t в изолированном Docker-контейнере.
- Возможность объяснить весь конфиг через ИИ и экспортировать результат (ZIP или ссылка).
Безопасность: Данные не сохраняются без явного создания ссылки, приватные ключи использовать нельзя.
Статус: Бесплатный веб-сервис, код закрыт, версии для самостоятельного хостинга пока нет.
Статья - https://habr.com/ru/articles/1026962/
Инструмент для упрощения процесса конфигурирования nginx: NginxForge. Данная статья, по сути, является саморекламой от автора, но я уверен, что в какой-то момент вам это может пригодиться.
Проблема: Настройка nginx сопряжена с типовыми ошибками (слэши в proxy_pass, устаревший TLS, лишняя информация в заголовках), которые сложно отловить без глубокого погружения.
Решение: Инструмент NginxForge генерирует готовые конфиги под популярные сценарии.
Главные фишки:
- Пояснения к каждой директиве на русском с предупреждениями о рисках.
- Реальная проверка синтаксиса через nginx -t в изолированном Docker-контейнере.
- Возможность объяснить весь конфиг через ИИ и экспортировать результат (ZIP или ссылка).
Безопасность: Данные не сохраняются без явного создания ссылки, приватные ключи использовать нельзя.
Статус: Бесплатный веб-сервис, код закрыт, версии для самостоятельного хостинга пока нет.
Статья - https://habr.com/ru/articles/1026962/
Хабр
Я устал каждый раз гуглить одно и то же в nginx — и сделал инструмент, который объясняет конфиги на русском
Очередной генератор nginx-конфигов? Нет. Ну, почти нет. Есть такой тип задач, который делаешь нечасто, но каждый раз заново. Nginx — из таких. Настраиваю его раз в несколько месяцев: новый проект,...
❤2
#blog
Сегодня - небольшая интерактивная статья про
Проблема: Традиционные
Решение: Range Queries (Media Queries Level 4) позволяют использовать операторы сравнения
Плюсы: Код становится понятнее, проще задавать диапазоны
Поддержка: Доступен во всех современных браузерах с марта 2023 года.
Статья - https://ishadeed.com/article/range-syntax/
Сегодня - небольшая интерактивная статья про
range syntax для CSS media query. Подход был введен еще в 2023 году, поэтому проблем с поддержкой можно не опасаться. Возможно именно эта статья побудит вас перейти на современный синтаксис:Проблема: Традиционные
min-width и max-width с одинаковыми значениями создают конфликты на границах брейкпоинтов.Решение: Range Queries (Media Queries Level 4) позволяют использовать операторы сравнения
(<=, >) напрямую, например: @media (width <= 300px).Плюсы: Код становится понятнее, проще задавать диапазоны
(300px <= width <= 500px), синтаксис работает и для контейнерных запросов.Поддержка: Доступен во всех современных браузерах с марта 2023 года.
Статья - https://ishadeed.com/article/range-syntax/
Ishadeed
Media Queries Range Syntax
❤2
#blog
Сегодня о том, как развивается функциональность в Angular - от
Автор разбирает 5 стадий жизненного цикла фич:
• Experimental
• Developer Preview
• Stable
• Deprecated
• Removed
И главное - объясняет, как меняется стратегия команды на каждом этапе:
• когда можно безопасно тащить фичу в прод,
• почему stable - это не «навсегда»,
• как команда Angular обеспечивает постепенные миграции,
• и почему будущая смерть
Полезный материал для тех, кто работает с Angular на длинной дистанции и думает не только о developer experience, но и о поддерживаемости архитектуры через несколько лет.
Ссылка на материал - https://medium.com/ngconf/the-5-lifecycle-stages-of-an-angular-feature-c3ecc5529d53
Сегодня о том, как развивается функциональность в Angular - от
experimental до полного удаления из фреймворка.Автор разбирает 5 стадий жизненного цикла фич:
• Experimental
• Developer Preview
• Stable
• Deprecated
• Removed
И главное - объясняет, как меняется стратегия команды на каждом этапе:
• когда можно безопасно тащить фичу в прод,
• почему stable - это не «навсегда»,
• как команда Angular обеспечивает постепенные миграции,
• и почему будущая смерть
*ngIf, *ngFor и других структурных директив уже практически предрешена.Полезный материал для тех, кто работает с Angular на длинной дистанции и думает не только о developer experience, но и о поддерживаемости архитектуры через несколько лет.
Ссылка на материал - https://medium.com/ngconf/the-5-lifecycle-stages-of-an-angular-feature-c3ecc5529d53
Medium
The 5 Lifecycle Stages of an Angular Feature
From the Experimental Phase to Permanent Removal
❤5
#blog
В Chrome 148 представлен новый HTML-элемент
Преимущества: Браузер сам рендерит доверенную кнопку (как для геолокации), что упрощает код и повышает доверие пользователя.
Установка текущего приложения: Достаточно добавить
Установка сторонних приложений: Используйте атрибут
Совместимость: Внутри элемента можно разместить fallback-контент (например, ссылку) для браузеров без поддержки.
События: Элемент поддерживает обработчики событий:
Доступность: Доступно в Chrome и Edge (с версии 148) за флагом или через Origin Trial.
Сравнение с JS API: В отличие от императивного
Статья: https://developer.chrome.com/blog/install-element-ot
В Chrome 148 представлен новый HTML-элемент
<install>, позволяющий добавлять кнопку установки веб-приложения без использования JavaScript (но пока скрыт за флагом).Преимущества: Браузер сам рендерит доверенную кнопку (как для геолокации), что упрощает код и повышает доверие пользователя.
Установка текущего приложения: Достаточно добавить
<install></install>, если у манифеста есть поле id.Установка сторонних приложений: Используйте атрибут
installurl для указания URL другого приложения (можно добавить manifestid, если id отсутствует).Совместимость: Внутри элемента можно разместить fallback-контент (например, ссылку) для браузеров без поддержки.
События: Элемент поддерживает обработчики событий:
promptaction (успех), promptdismiss (отмена), validationstatuschanged (ошибки).Доступность: Доступно в Chrome и Edge (с версии 148) за флагом или через Origin Trial.
Сравнение с JS API: В отличие от императивного
navigator.install(), элемент <install> — декларативный, требует меньше кода, но дает меньше возможностей кастомизации интерфейса.Статья: https://developer.chrome.com/blog/install-element-ot
Chrome for Developers
Install web apps with the new HTML install element | Blog | Chrome for Developers
Test the proposed install element.
1❤2
#blog
Navigation API (теперь в Baseline) — современная замена History API для SPA. Доступен через
- Единый центр: Событие navigate перехватывает всё: клики, кнопки «Назад/Вперед», отправку форм. Старые методы (pushState, ссылки) тоже триггерят это событие.
- Управление переходом: Метод
- Автоматическая отмена запросов (fetch) при новой навигации через signal.
- Ручной контроль прокрутки и фокуса.
- История и состояние: Методы
- Фишки: Идеально работает в паре с View Transitions API для анимаций.
- Минусы: Не срабатывает при первой загрузке страницы, работает только в рамках одного фрейма, нельзя удалять записи из истории.
Статья: https://habr.com/ru/companies/timeweb/articles/1008840/
Navigation API (теперь в Baseline) — современная замена History API для SPA. Доступен через
window.navigation. Вкратце:- Единый центр: Событие navigate перехватывает всё: клики, кнопки «Назад/Вперед», отправку форм. Старые методы (pushState, ссылки) тоже триггерят это событие.
- Управление переходом: Метод
intercept({ handler }) позволяет асинхронно загрузить контент до смены URL.- Автоматическая отмена запросов (fetch) при новой навигации через signal.
- Ручной контроль прокрутки и фокуса.
- История и состояние: Методы
navigate, back, traverseTo возвращают промисы статуса. Состояние (state) можно менять без перехода через updateCurrentEntry(). У каждой записи есть уникальный key.- Фишки: Идеально работает в паре с View Transitions API для анимаций.
- Минусы: Не срабатывает при первой загрузке страницы, работает только в рамках одного фрейма, нельзя удалять записи из истории.
Статья: https://habr.com/ru/companies/timeweb/articles/1008840/
Хабр
Navigation API теперь доступен в Baseline
Navigation API предоставляет возможность инициировать (программно запускать), перехватывать и управлять навигацией в браузере. Он также позволяет исследовать (traverse) сущности истории (history...
1🔥5
#blog
Сегодня - статья о сравнении анимаций в CSS и JavaScript. Внутри есть наглядные интерактивные визуализации описанного, советую заглянуть. А если тезисно про суть:
- Поток выполнения: CSS-анимации работают в отдельном потоке композитора и не блокируются кодом, а JS-анимации — в основном потоке и «замирают» при нагрузке.
- Свойства: Не все анимируемые свойства ведут себя одинаково. Те, что не вызывают перерисовок макета (transform, opacity) отработают плавно даже в JS.
- Исключение для JS: Библиотеки на базе WAAPI (например, Motion) работают так же плавно, как CSS, в отличие от классических (GSAP), которые теряют синхронизацию времени при тормозах.
- Правило выбора: Всегда приоритет нативному CSS. JS-библиотеки подключайте только для уникальных эффектов (морфинг, сложная физика), недоступных в CSS.
Статья: https://www.joshwcomeau.com/animation/css-vs-javascript/
Сегодня - статья о сравнении анимаций в CSS и JavaScript. Внутри есть наглядные интерактивные визуализации описанного, советую заглянуть. А если тезисно про суть:
- Поток выполнения: CSS-анимации работают в отдельном потоке композитора и не блокируются кодом, а JS-анимации — в основном потоке и «замирают» при нагрузке.
- Свойства: Не все анимируемые свойства ведут себя одинаково. Те, что не вызывают перерисовок макета (transform, opacity) отработают плавно даже в JS.
- Исключение для JS: Библиотеки на базе WAAPI (например, Motion) работают так же плавно, как CSS, в отличие от классических (GSAP), которые теряют синхронизацию времени при тормозах.
- Правило выбора: Всегда приоритет нативному CSS. JS-библиотеки подключайте только для уникальных эффектов (морфинг, сложная физика), недоступных в CSS.
Статья: https://www.joshwcomeau.com/animation/css-vs-javascript/
Joshwcomeau
CSS vs. JavaScript • Josh W. Comeau
There are a bunch of JavaScript animation libraries out there, and you might have wondered whether there’s a performance cost compared to traditional CSS transitions and keyframe animations. In this blog post, we’ll compare the same animation across several…
1❤1👍1