Forwarded from xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31👍3❤2👎2
Утечки памяти в JavaScript — это не только про забытые таймеры. На самом деле существует множество других скрытых причин, которые могут годами «поглощать» память. Даже опытные разработчики часто упускают эти моменты, которые становятся источниками утечек в продакшене. Сегодня разберем, какие типичные ошибки приводят к утечкам памяти и как их избегать.
❌ Зависшие ссылки в замыканиях
Когда компонент или объект был удалён, но замыкание всё равно сохраняет ссылку на данные, они не могут быть очищены. Это классическая ошибка, особенно при больших данных.
Проблема (в примерах): bigData остаётся в памяти, пока существует ссылка на колбэк.❌ Глобальные переменные
Ошибки с глобальными переменными часто возникают, когда забывают использовать const или let.
Проблема (в примерах): Любой объект в глобальной области будет жить вечно.❌ Слушатели событий и DOM-узлы
Если слушатели событий или DOM-узлы не удаляются после того, как элементы были удалены, это может привести к утечкам. Особенно часто это случается с модальными окнами или кастомными компонентами.
Проблема (в примерах): После удаления элемента слушатель остаётся, удерживая объект в памяти.❌ Неправильное использование таймеров
Таймеры типа setInterval, которые не очищаются при уходе со страницы, могут продолжать работать, удерживая тяжёлые данные.
Проблема: Таймер продолжает работать, сохраняя контекст.❌ Неправильное использование таймеров
Таймеры, такие как setInterval, могут стать серьезным источником утечек памяти, если не очищаются при уходе со страницы или продолжают ссылаться на контекст.
Проблема: Таймер продолжает работать, удерживая тяжелые данные в замыкании, даже после того, как компонент был размонтирован.❌ Кэши без лимитов
Попытки сделать «умное кэширование» без ограничений на размер могут привести к утечкам.
Проблема (в примерах): Без лимитов на кэш память будет заполняться бесконечно.❌ Проблемы с Web Workers
Ошибки в работе с Web Workers, такие как передача данных без Transferables или не закрытые воркеры, могут стать причиной утечек.❌ Сторонние библиотеки
Некоторые библиотеки, особенно для UI, могут создавать скрытые DOM-структуры и не очищать их по завершении работы, что также ведет к утечкам.❌ React: stale effects
В React утечки могут происходить из-за старых ссылок в эффектах, которые не пересоздаются.
Проблема (в примерах): Эффект не пересоздается, старые ссылки остаются.
// Зависшие ссылки в замыканиях
function createTracker() {
const bigData = new Array(1_000_000).fill('x');
return () => console.log(bigData.length);
}
// Глобальные переменные
foo = {}; // теперь это window.foo
// Слушатели событий и DOM-узлы
element.addEventListener('scroll', handler);
// element.removeEventListener(...) забыли
// Кэши без лимитов
const cache = {};
cache[key] = heavyObject;
// React: stale effects
useEffect(() => {
subscribe();
return () => unsubscribe();
}, []); // но зависимость должна быть!Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤7
Почему сильные инженеры пишут простой код
Со временем становится заметно, что чем опытнее разработчик - тем проще его код.
Меньше «умных» трюков.
Меньше демонстрации возможностей языка.
Больше спокойных, очевидных решений.
Это не парадокс. Это закономерность.
💛 Они думают о будущем
Сложный код почти всегда превращается в ловушку для команды.
💛 Они оптимизируют не компьютер, а команду
его стоимость уже слишком высокая.
💛 Они не доказывают ум - они решают задачи
💛 Они понимают цену абстракции
💛 Простота - это не примитивность
Главная мысль
Сложность - дешёвая.
Простота - дорогая.
И именно поэтому сильные инженеры выбирают её сознательно.
Потому что через год этот код поддерживать им же.
Со временем становится заметно, что чем опытнее разработчик - тем проще его код.
Меньше «умных» трюков.
Меньше демонстрации возможностей языка.
Больше спокойных, очевидных решений.
Это не парадокс. Это закономерность.
Слабый инженер пишет код, который работает.
Сильный - код, который можно изменить через год.
Простой код:🔘 легче читать🔘 легче тестировать🔘 легче рефакторить
Сложный код почти всегда превращается в ловушку для команды.
Самая дорогая операция в проекте - не вычисление.
А понимание чужого кода.
Если решение:🔘 требует 10 минут объяснений🔘 построено на «красивом» хаке🔘 использует экзотические паттерны
его стоимость уже слишком высокая.
Новички часто хотят показать, что знают:🔘 сложные абстракции🔘 хитрые дженерики🔘 продвинутые паттерны
Сильные инженеры знают другое правило:
если можно проще - нужно проще.
Абстракция - это не подарок. Это долг.
Каждый дополнительный слой - это:🔘 когнитивная нагрузка🔘 новая точка отказа🔘 усложнённый дебаг
Поэтому опытные разработчики добавляют абстракции только тогда,
когда они действительно снимают боль, а не создают её.
Простой код - это:🔘 явные зависимости🔘 понятные названия🔘 минимум магии🔘 предсказуемое поведение
Чтобы писать так, нужен опыт.
Потому что простота - результат множества осознанных решений.
Главная мысль
Сложность - дешёвая.
Простота - дорогая.
И именно поэтому сильные инженеры выбирают её сознательно.
Потому что через год этот код поддерживать им же.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23👍9🔥8👎7👀1
Forwarded from xCode Journal
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁38⚡4❤2
HTML Popover API — нативные попапы без 200 строк JS
Любой попап = библиотека, порталы и куча логики?
Не обязательно. В HTML есть нативный
Что это
Встроенный механизм для:
👉 тултипов
👉 дропдаунов
👉 контекстных меню
👉 простых модалок
Без менеджеров состояния и ловли кликов вне.
Кнопка сама знает, что открыть.
Почему это круто
👉 нативное управление фокусом
👉 закрытие по Escape и клику вне
👉 минимум JavaScript
👉 полная стилизация через CSS
Режимы
Где использовать
👉 dropdown
👉 меню действий
👉 фильтры
👉 небольшие панели
Меньше кода.
Меньше багов.
Меньше велосипеда.
Любой попап = библиотека, порталы и куча логики?
Не обязательно. В HTML есть нативный
popover — полноценный API.Что это
Встроенный механизм для:
👉 тултипов
👉 дропдаунов
👉 контекстных меню
👉 простых модалок
Без менеджеров состояния и ловли кликов вне.
<button popovertarget="info">Открыть</button>
<div id="info" popover>
Контент
</div>
Кнопка сама знает, что открыть.
Почему это круто
👉 нативное управление фокусом
👉 закрытие по Escape и клику вне
👉 минимум JavaScript
👉 полная стилизация через CSS
Режимы
auto — закрывается при клике вне manual — управляешь через JS
element.showPopover()
element.hidePopover()
element.togglePopover()
Где использовать
👉 dropdown
👉 меню действий
👉 фильтры
👉 небольшие панели
Это не замена сложным модальным системам.
Но для простого UI — почти идеальный инструмент.
Меньше кода.
Меньше багов.
Меньше велосипеда.
1❤20👍15👀4😁1
Как frontend-разработчику получить оффер в Big Tech?
Платят как джуну, а спрашивают как с лида 🙄 Зарплата не растёт, задачи скучные.
Пробуешь откликаться, но на резюме клюют только ноунейм компании, а на собесах валят на алгоритмах? При этом вокруг кто-то постоянно получает офферы в Яндекс или VK...
Стабильность с маленькой зп, или дестрой рынка и выход на максимальную? Синяя или красная таблетка, Нео?! 👾
В своем канале:
👉Разбираю самые популярные и каверзные вопросы на собесах
👉Рассказываю как пройти фильтр HR
👉Борюсь с убеждениями, которые мешают развиваться
👉Делюсь лайфхаками, например как аккуратно “пинговать” рекрутеров
Регулярно публикую полезные материалы:
▪️60 вопросов, которые точно помогут тебе на собеседовании
▪️Подборка из 100+ каналов с вакансиями для разработчиков
▪️10 задротских вопросов про JavaScript, после которых ты усомнишься, что вообще знаешь JS. Часть 1
▪️Чек лист проверки своего резюме
Подписывайся, нас уже 4500 🤓: ссылка
Реклама, erid: 2W5zFGv4CQR ИП Галактионов Тихон Витальевич, ИНН 771618975809
Платят как джуну, а спрашивают как с лида 🙄 Зарплата не растёт, задачи скучные.
Пробуешь откликаться, но на резюме клюют только ноунейм компании, а на собесах валят на алгоритмах? При этом вокруг кто-то постоянно получает офферы в Яндекс или VK...
Стабильность с маленькой зп, или дестрой рынка и выход на максимальную? Синяя или красная таблетка, Нео?! 👾
Меня зовут Тихон, привет! Я — действующий Frontend-разработчик и ментор.
Помогаю устроиться на хорошие позиции в Big Tech и сопровождаю на испытательном сроке.
В своем канале:
👉Разбираю самые популярные и каверзные вопросы на собесах
👉Рассказываю как пройти фильтр HR
👉Борюсь с убеждениями, которые мешают развиваться
👉Делюсь лайфхаками, например как аккуратно “пинговать” рекрутеров
Регулярно публикую полезные материалы:
▪️60 вопросов, которые точно помогут тебе на собеседовании
▪️Подборка из 100+ каналов с вакансиями для разработчиков
▪️10 задротских вопросов про JavaScript, после которых ты усомнишься, что вообще знаешь JS. Часть 1
▪️Чек лист проверки своего резюме
Подписывайся, нас уже 4500 🤓: ссылка
Реклама, erid: 2W5zFGv4CQR ИП Галактионов Тихон Витальевич, ИНН 771618975809
👎8😁3👍1
Forwarded from xCode Journal
Разраб создал проект Salary Tiers, который разбивает зарплаты по городам и выдает жестокую правду о том, на каком ты уровне жизни.
Смотрим и плачем здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁36👎9❤5👀3
Рост найма Fullstack-разработчиков на 28% в 2025 году: последствия для Frontend-специалистов
Увеличение спроса на Fullstack-разработчиков
В 2025 году количество вакансий для Fullstack-разработчиков увеличилось на 28%, что обусловлено их универсальностью и способностью работать как с клиентской, так и с серверной частью приложений. Это позволяет компаниям оптимизировать затраты и ускорять процесс разработки.
Влияние на рынок Frontend-разработчиков
Рост популярности Fullstack-разработчиков привел к снижению спроса на узкоспециализированных Frontend-разработчиков. В результате, в 2025 году зарплаты Frontend-специалистов снизились на 5–12% в зависимости от уровня квалификации.
Рекомендации для Frontend-специалистов
Чтобы оставаться конкурентоспособными, Frontend-разработчикам рекомендуется расширять свои навыки, осваивая Backend-технологии и становясь Fullstack-специалистами. Это повысит их ценность на рынке труда и позволит претендовать на более высокие зарплаты.
Факты:
👉 В 2025 году количество вакансий для Fullstack-разработчиков увеличилось на 28%.
👉 Зарплаты Frontend-разработчиков в 2025 году снизились на 5–12% в зависимости от уровня квалификации.
❗️Рост спроса на Fullstack-разработчиков в 2025 году оказывает давление на рынок Frontend-специалистов, снижая их зарплаты и востребованность. Для сохранения конкурентоспособности рекомендуется расширять компетенции и переходить к Fullstack-разработке.
Источники:
Сколько зарабатывают программисты в России в 2025 году: полный обзор зарплат IT-специалистов.
Аналитика ИТ-зарплат: Senior и TeamLead показывают рост до 12,5% на фоне падения остальных грейдов.
1С-разработчик 2025: расширять стек или углубляться. Как знание других языков программирования влияет на доход.
Увеличение спроса на Fullstack-разработчиков
В 2025 году количество вакансий для Fullstack-разработчиков увеличилось на 28%, что обусловлено их универсальностью и способностью работать как с клиентской, так и с серверной частью приложений. Это позволяет компаниям оптимизировать затраты и ускорять процесс разработки.
Влияние на рынок Frontend-разработчиков
Рост популярности Fullstack-разработчиков привел к снижению спроса на узкоспециализированных Frontend-разработчиков. В результате, в 2025 году зарплаты Frontend-специалистов снизились на 5–12% в зависимости от уровня квалификации.
Рекомендации для Frontend-специалистов
Чтобы оставаться конкурентоспособными, Frontend-разработчикам рекомендуется расширять свои навыки, осваивая Backend-технологии и становясь Fullstack-специалистами. Это повысит их ценность на рынке труда и позволит претендовать на более высокие зарплаты.
Факты:
👉 В 2025 году количество вакансий для Fullstack-разработчиков увеличилось на 28%.
👉 Зарплаты Frontend-разработчиков в 2025 году снизились на 5–12% в зависимости от уровня квалификации.
❗️Рост спроса на Fullstack-разработчиков в 2025 году оказывает давление на рынок Frontend-специалистов, снижая их зарплаты и востребованность. Для сохранения конкурентоспособности рекомендуется расширять компетенции и переходить к Fullstack-разработке.
Источники:
Сколько зарабатывают программисты в России в 2025 году: полный обзор зарплат IT-специалистов.
Аналитика ИТ-зарплат: Senior и TeamLead показывают рост до 12,5% на фоне падения остальных грейдов.
1С-разработчик 2025: расширять стек или углубляться. Как знание других языков программирования влияет на доход.
Best Courses
Сколько зарабатывают программисты в России в 2025 году: полный обзор зарплат IT-специалистов - Best Courses
Программирование — это профессия, где опыт и навыки напрямую влияют на размер зарплаты. Рассмотрим детально, как меняется доход разработчика на разных этапах карьеры.
👀11❤3😱2👍1
15 марта встречаемся на AI Dev Day — это митап Яндекса, посвященный реальному опыту внедрения AI-инструментов в процессы разработки.
Программа разделена на 2 тематических блока. В первой части руководители и инженеры Яндекса, Сбера, Т-Банка, Ozon и Avito расскажут, как их команды внедряют AI в разработку.
Например, Андрей Попов, лидер трека AI в разработке в Яндексе, расскажет про оптимизацию процессов, тестирование, работу с инцидентами благодаря AI. А еще — поделится, на какие метрики смотреть важнее всего.
Вторая часть — про конкретные проекты, кейсы и технологии. Сергей Бульдяев, технический менеджер продукта в Яндексе, выступит с докладом о том, как создавался кодовый ассистент для разработчиков в IDE на базе open-source решения. Отдельно будет рассказ про агента за пределами IDE на примере YQL-агента.
В этом же блоке Максим Шведенко, руководитель направления Департамента недвижимости и эксплуатации в Сбере, объяснит из чего состоит мультиагентная система, помогающая дизайнерам.
Мероприятие пройдет в московском офисе Яндекса. Для тех, кто не сможет прийти — будет онлайн-трансляция.
Регистрируемся на митап до 12 марта.
Программа разделена на 2 тематических блока. В первой части руководители и инженеры Яндекса, Сбера, Т-Банка, Ozon и Avito расскажут, как их команды внедряют AI в разработку.
Например, Андрей Попов, лидер трека AI в разработке в Яндексе, расскажет про оптимизацию процессов, тестирование, работу с инцидентами благодаря AI. А еще — поделится, на какие метрики смотреть важнее всего.
Вторая часть — про конкретные проекты, кейсы и технологии. Сергей Бульдяев, технический менеджер продукта в Яндексе, выступит с докладом о том, как создавался кодовый ассистент для разработчиков в IDE на базе open-source решения. Отдельно будет рассказ про агента за пределами IDE на примере YQL-агента.
В этом же блоке Максим Шведенко, руководитель направления Департамента недвижимости и эксплуатации в Сбере, объяснит из чего состоит мультиагентная система, помогающая дизайнерам.
Мероприятие пройдет в московском офисе Яндекса. Для тех, кто не сможет прийти — будет онлайн-трансляция.
Регистрируемся на митап до 12 марта.
❤2👍1👎1🔥1
Forwarded from xCode Journal
Media is too big
VIEW IN TELEGRAM
GitNexus работает полностью в браузере — просто кидаешь ссылку на GitHub или загружаешь архив и получаешь наглядную карту: файлы, модули, зависимости и связи между ними. Плюс внутри есть ИИ-агент, который отвечает на все вопросы по проекту. Так что можно узнать, где используется функция, как связаны компоненты или за что отвечает конкретный модуль.
По сути, это быстрый способ разобраться в чужом (да и своем…) проекте.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍3
ES2025: Импорт JSON-файлов как модулей
Введение
С выходом
Синтаксис импорта JSON-модулей
Для импорта JSON-файла используется ключевое слово
Пример использования
Рассмотрим пример импорта конфигурационного файла
❗️Добавление поддержки импорта JSON-файлов как модулей в
Источники
JSON Modules Can Now Be Imported in JavaScript in All Modern Browsers, CSS Modules to Follow.
New Features in ES2025 – BooleanBuffer.
Введение
С выходом
ECMAScript 2025 (ES2025) разработчики получили возможность напрямую импортировать JSON-файлы как модули в JavaScript-коде. Это упрощает работу с конфигурационными данными и другими статическими ресурсами, представленными в формате JSON.Синтаксис импорта JSON-модулей
Для импорта JSON-файла используется ключевое слово
import с указанием атрибута with { type: 'json' }. Это гарантирует, что импортируемый файл будет обработан как JSON-модуль.Пример использования
Рассмотрим пример импорта конфигурационного файла
config.json и обращения к его свойствам в коде.import config from './config.json' with { type: 'json' };
.log(config.apiUrl); // Выводит значение свойства apiUrl из config.json
console.log(config.timeout); // Выводит значение свойства timeout из config.json
❗️Добавление поддержки импорта JSON-файлов как модулей в
ES2025 упрощает работу с данными в формате JSON, делая код более чистым и понятным.Источники
JSON Modules Can Now Be Imported in JavaScript in All Modern Browsers, CSS Modules to Follow.
New Features in ES2025 – BooleanBuffer.
InfoQ
JSON Modules Can Now Be Imported in JavaScript in All Modern Browsers, CSS Modules to Follow
Thomas Steiner, developer relations engineer at Google, recently published a blog post announcing that JSON module noscripts were now available in all modern browsers. Developers using the latest version of modern browsers can now directly import JSON modules…
👍19😱5❤3
Управление ресурсами с помощью using и await using в JavaScript
Введение в управление ресурсами
В
Синхронное управление ресурсами с using
Конструкция
Асинхронное управление ресурсами с await using
Для асинхронных ресурсов используется конструкция
Пример использования await using
Рассмотрим пример чтения файла с использованием
Факты
👉 В
👉 Конструкция
👉 Конструкция
❗️Введение конструкций
Источники
JavaScript's New Superpower: Explicit Resource Management.
JavaScript resource management - JavaScript | MDN.
Введение в управление ресурсами
В
2025 году в JavaScript были введены конструкции using и await using для явного управления жизненным циклом ресурсов, таких как файловые дескрипторы и сетевые соединения. Эти конструкции обеспечивают автоматическое освобождение ресурсов при выходе из области видимости, повышая надежность и производительность кода.Синхронное управление ресурсами с using
Конструкция
using предназначена для синхронных ресурсов. При выходе из области видимости переменной, объявленной с using, автоматически вызывается метод [Symbol.dispose]() этого ресурса. Это гарантирует своевременное освобождение ресурсов и предотвращает утечки памяти.Асинхронное управление ресурсами с await using
Для асинхронных ресурсов используется конструкция
await using. Она обеспечивает вызов метода [Symbol.asyncDispose]() при выходе из области видимости, дожидаясь завершения асинхронной операции освобождения ресурса. Это особенно полезно для ресурсов, требующих асинхронного закрытия, таких как файловые дескрипторы в Node.js.Пример использования await using
Рассмотрим пример чтения файла с использованием
await using в Node.js. В этом примере открывается файл, читается его содержимое, после чего файл автоматически закрывается при выходе из области видимости.
import fs from 'node:fs/promises';
async function readFile(filePath) {
await using fileHandle = await fs.open(filePath, 'r');
const data = await fileHandle.readFile({ encoding: 'utf8' });
console.log(data);
}
readFile('example.txt').catch(console.error);
Факты
👉 В
2025 году в JavaScript были введены конструкции using и await using для явного управления ресурсами.👉 Конструкция
using автоматически вызывает метод [Symbol.dispose]() при выходе из области видимости.👉 Конструкция
await using автоматически вызывает метод [Symbol.asyncDispose]() при выходе из области видимости, дожидаясь завершения асинхронной операции.❗️Введение конструкций
using и await using в JavaScript в 2025 году значительно упростило управление ресурсами, обеспечивая их автоматическое освобождение и повышая надежность кода.Источники
JavaScript's New Superpower: Explicit Resource Management.
JavaScript resource management - JavaScript | MDN.
v8.dev
JavaScript's New Superpower: Explicit Resource Management · V8
The Explicit Resource Management proposal empowers developers to explicitly manage the lifecycle of resources.
👀7❤5
Как CSS заменяет JavaScript: новые возможности CSS
Введение
В
Позиционирование относительно якорных элементов
Функция
Анимации, связанные с прокруткой
С появлением
Код
Пользовательские функции CSS
Пользовательские функции CSS позволяют создавать настраиваемые функции, которые возвращают значения, основанные на других свойствах и параметрах. Это расширяет возможности стилизации и уменьшает необходимость в JavaScript для динамических стилей.
Вложенные правила CSS
❗️ Новые возможности CSS в
Источники
Frontend Wrapped 2025: 10 ключевых событий года.
Анимации без JavaScript — новые возможности CSS 2025.
Заметки о выпуске веб-платформы Microsoft Edge 139 (август 2025 г.).
Фронтенд 2025: AI-революция, Server-First и конец эпохи тяжёлых SPA.
Введение
В
2025 году CSS значительно расширил свои возможности, позволяя реализовывать функциональность, ранее доступную только через JavaScript. Это привело к упрощению кода, улучшению производительности и повышению доступности веб-приложений.Позиционирование относительно якорных элементов
Функция
Anchor Positioning позволяет размещать всплывающие подсказки и выпадающие списки относительно других элементов без использования JavaScript. Это упрощает создание интерактивных интерфейсов и снижает зависимость от сторонних библиотек.Анимации, связанные с прокруткой
С появлением
@scroll-timeline разработчики могут связывать прогресс анимации с прокруткой страницы, создавая сложные эффекты без необходимости писать JavaScript-код. Это улучшает производительность и делает анимации более плавными.Код
/* Пример использования @scroll-timeline для анимации, связанной с прокруткой */
@scroll-timeline --scroll {
source: auto;
orientation: block;
}
.element {
animation: fade-in linear;
animation-timeline: --scroll;
}
@keyframes fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
Пользовательские функции CSS
Пользовательские функции CSS позволяют создавать настраиваемые функции, которые возвращают значения, основанные на других свойствах и параметрах. Это расширяет возможности стилизации и уменьшает необходимость в JavaScript для динамических стилей.
Вложенные правила CSS
CSS Nesting позволяет использовать вложенные правила без необходимости в препроцессорах, упрощая структуру стилей и уменьшая объем кода. Это делает CSS более читаемым и поддерживаемым.❗️ Новые возможности CSS в
2025 году значительно сократили необходимость использования JavaScript для реализации интерактивных и динамических элементов на веб-страницах, упрощая разработку и улучшая производительность приложений.Источники
Frontend Wrapped 2025: 10 ключевых событий года.
Анимации без JavaScript — новые возможности CSS 2025.
Заметки о выпуске веб-платформы Microsoft Edge 139 (август 2025 г.).
Фронтенд 2025: AI-революция, Server-First и конец эпохи тяжёлых SPA.
❤8😁4🔥2
Внутренние процессы браузера при загрузке страницы
Архитектура браузера
Современные браузеры используют многопроцессную архитектуру для повышения стабильности и безопасности. Основные компоненты включают процесс браузера, процессы рендеринга для каждой вкладки, процесс GPU и процессы расширений. Такая структура позволяет изолировать сбои и повышает производительность.
Этапы загрузки страницы
При вводе URL браузер выполняет следующие шаги:
👉 Разрешение доменного имени через DNS для получения IP-адреса сервера.
👉 Установление TCP-соединения с сервером.
👉 Отправка HTTP-запроса и получение ответа.
👉 Парсинг HTML-кода и построение DOM-дерева.
👉 Загрузка и применение CSS для формирования CSSOM.
👉 Объединение DOM и CSSOM в рендер-дерево.
👉 Вычисление геометрии элементов (layout).
👉 Отрисовка элементов на экране (painting).
Гидратация
Гидратация — процесс, при котором клиентский JavaScript делает статически отрендеренную страницу интерактивной, присоединяя обработчики событий к элементам DOM. Это обеспечивает быструю первую отрисовку контента, но требует дополнительного времени для полной интерактивности.
Оптимизация загрузки
Для минимизации времени загрузки страницы рекомендуется:
👉 Использовать асинхронную загрузку скриптов.
👉 Минимизировать количество HTTP-запросов.
👉 Оптимизировать изображения и другие ресурсы.
👉 Использовать кэширование.
👉 Применять Content Delivery Network (CDN) для ускорения доставки контента.
Факты
👉 Многопроцессная архитектура браузеров повышает стабильность и безопасность.
👉 Гидратация делает статически отрендеренные страницы интерактивными.
👉 Оптимизация загрузки включает асинхронную загрузку скриптов и использование CDN.
❗️Понимание внутренних процессов браузера при загрузке страницы позволяет разработчикам оптимизировать производительность и улучшить пользовательский опыт.
Источники
Руководство по работе современного браузера описано в данном источнике.
Этапы отрисовки веб-страницы раскрыты в статье на lexusalex.site.
Описание гидратации можно найти на Википедии.
Советы по оптимизации загрузки доступны на MDN.
Архитектура браузера
Современные браузеры используют многопроцессную архитектуру для повышения стабильности и безопасности. Основные компоненты включают процесс браузера, процессы рендеринга для каждой вкладки, процесс GPU и процессы расширений. Такая структура позволяет изолировать сбои и повышает производительность.
Этапы загрузки страницы
При вводе URL браузер выполняет следующие шаги:
👉 Разрешение доменного имени через DNS для получения IP-адреса сервера.
👉 Установление TCP-соединения с сервером.
👉 Отправка HTTP-запроса и получение ответа.
👉 Парсинг HTML-кода и построение DOM-дерева.
👉 Загрузка и применение CSS для формирования CSSOM.
👉 Объединение DOM и CSSOM в рендер-дерево.
👉 Вычисление геометрии элементов (layout).
👉 Отрисовка элементов на экране (painting).
Гидратация
Гидратация — процесс, при котором клиентский JavaScript делает статически отрендеренную страницу интерактивной, присоединяя обработчики событий к элементам DOM. Это обеспечивает быструю первую отрисовку контента, но требует дополнительного времени для полной интерактивности.
Оптимизация загрузки
Для минимизации времени загрузки страницы рекомендуется:
👉 Использовать асинхронную загрузку скриптов.
👉 Минимизировать количество HTTP-запросов.
👉 Оптимизировать изображения и другие ресурсы.
👉 Использовать кэширование.
👉 Применять Content Delivery Network (CDN) для ускорения доставки контента.
Факты
👉 Многопроцессная архитектура браузеров повышает стабильность и безопасность.
👉 Гидратация делает статически отрендеренные страницы интерактивными.
👉 Оптимизация загрузки включает асинхронную загрузку скриптов и использование CDN.
❗️Понимание внутренних процессов браузера при загрузке страницы позволяет разработчикам оптимизировать производительность и улучшить пользовательский опыт.
Источники
Руководство по работе современного браузера описано в данном источнике.
Этапы отрисовки веб-страницы раскрыты в статье на lexusalex.site.
Описание гидратации можно найти на Википедии.
Советы по оптимизации загрузки доступны на MDN.
lexusalex.site
Процесс отрисовки веб-страницы браузером
Рассмотрим процесс отображения веб-страницы браузером
❤12👍6🔥3🐳1
Геныч. - @just_genych
Please open Telegram to view this post
VIEW IN TELEGRAM
👎6❤1
Forwarded from xCode Journal
Исследование Selecty и hh․ru показало: >200 тыс. рублей в месяц получают 51,5% мужчин и только 34,8% женщин. В тестировании этот порог пробивают 60% парней и 45% девушек, а в бэкенде высокие доходы лишь у 26,5% разработчиц.
Почему так? Мужчины чаще забирают руководящие посты и сеньорские грейды.
Please open Telegram to view this post
VIEW IN TELEGRAM
👎9👍3
Как одна строка CSS может сломать производительность вашего приложения
Введение
Небольшие изменения в CSS могут существенно повлиять на производительность веб-приложения. Одна строка кода способна замедлить загрузку страницы и ухудшить пользовательский опыт.
Сложные селекторы
Использование сложных CSS-селекторов увеличивает нагрузку на браузер при рендеринге страницы. Например, глубокая вложенность или чрезмерно специфичные селекторы усложняют обработку стилей и могут замедлить отображение контента. Рекомендуется упрощать селекторы и избегать избыточной специфичности. Освоение этой практики поможет избежать проблем, таких как общие ошибки в CSS.
Неиспользуемые стили
Загрузка неиспользуемых CSS-правил увеличивает размер страницы и время ее загрузки. Исследования показывают, что средний сайт содержит около
Инлайн-стили
Использование инлайн-стилей увеличивает размер HTML-документа и препятствует кэшированию стилей браузером, что замедляет загрузку страниц. Кроме того, инлайн-стили усложняют поддержку и обновление кода. Рекомендуется использовать внешние таблицы стилей для улучшения производительности и удобства сопровождения. Ознакомьтесь с причинами, почему следует избегать инлайн-стилей.
Оптимизация CSS
Для повышения производительности следует минимизировать и объединять CSS-файлы, избегать глубокого вложения селекторов и использовать только необходимые стили. Инструменты, такие как PurgeCSS, помогают выявлять и удалять неиспользуемые CSS-правила, снижая нагрузку на браузер и ускоряя рендеринг страниц. Узнайте больше о решении каскадных проблем в больших проектах из этой статьи.
Факты
👉 Средний сайт содержит около
👉 Сложные селекторы и глубокая вложенность усложняют обработку стилей браузером, замедляя рендеринг.
Итог
❗️ Даже одна строка CSS может существенно повлиять на производительность приложения. Регулярный аудит и оптимизация стилей необходимы для обеспечения быстрой и эффективной работы веб-приложений.
Источники
Освоение сложных CSS-селекторов — Avoiding Common Mistakes in CSS.
Анализ неиспользуемого CSS — The Hidden Performance Tax: How Unused CSS and JavaScript Slow Down Every Page.
Влияние инлайн-стилей — Why You Should Avoid Inline Styles in HTML.
Оптимизация каскадных проблем — Overcoming CSS Cascade Issues in Large Projects.
Введение
Небольшие изменения в CSS могут существенно повлиять на производительность веб-приложения. Одна строка кода способна замедлить загрузку страницы и ухудшить пользовательский опыт.
Сложные селекторы
Использование сложных CSS-селекторов увеличивает нагрузку на браузер при рендеринге страницы. Например, глубокая вложенность или чрезмерно специфичные селекторы усложняют обработку стилей и могут замедлить отображение контента. Рекомендуется упрощать селекторы и избегать избыточной специфичности. Освоение этой практики поможет избежать проблем, таких как общие ошибки в CSS.
Неиспользуемые стили
Загрузка неиспользуемых CSS-правил увеличивает размер страницы и время ее загрузки. Исследования показывают, что средний сайт содержит около
37% неиспользуемого CSS. Это приводит к дополнительной нагрузке на браузер и замедляет рендеринг. Регулярный аудит и удаление неиспользуемых стилей помогают оптимизировать производительность. Подробнее об этом вы можете узнать в статье о скрытых налогах производительности.Инлайн-стили
Использование инлайн-стилей увеличивает размер HTML-документа и препятствует кэшированию стилей браузером, что замедляет загрузку страниц. Кроме того, инлайн-стили усложняют поддержку и обновление кода. Рекомендуется использовать внешние таблицы стилей для улучшения производительности и удобства сопровождения. Ознакомьтесь с причинами, почему следует избегать инлайн-стилей.
Оптимизация CSS
Для повышения производительности следует минимизировать и объединять CSS-файлы, избегать глубокого вложения селекторов и использовать только необходимые стили. Инструменты, такие как PurgeCSS, помогают выявлять и удалять неиспользуемые CSS-правила, снижая нагрузку на браузер и ускоряя рендеринг страниц. Узнайте больше о решении каскадных проблем в больших проектах из этой статьи.
Факты
👉 Средний сайт содержит около
37% неиспользуемого CSS, что замедляет загрузку страниц. 👉 Сложные селекторы и глубокая вложенность усложняют обработку стилей браузером, замедляя рендеринг.
Итог
❗️ Даже одна строка CSS может существенно повлиять на производительность приложения. Регулярный аудит и оптимизация стилей необходимы для обеспечения быстрой и эффективной работы веб-приложений.
Источники
Освоение сложных CSS-селекторов — Avoiding Common Mistakes in CSS.
Анализ неиспользуемого CSS — The Hidden Performance Tax: How Unused CSS and JavaScript Slow Down Every Page.
Влияние инлайн-стилей — Why You Should Avoid Inline Styles in HTML.
Оптимизация каскадных проблем — Overcoming CSS Cascade Issues in Large Projects.
C-Sharpcorner
Avoiding Common Mistakes in CSS
In this article, we discussed CSS's common mistakes. Generally, beginners are doing a mistake just because of non of experience.
👍6❤2🔥1👀1