Получи случайную криптовалюту за регистрацию!

Фронтенд дайджест #211 Лучшее за неделю Подкаст [EN] Чтобы | FrontoWeek: Недельный дайджест [Фронтовик]

Фронтенд дайджест #211
Лучшее за неделю
Подкаст

[EN] Чтобы ускорить загрузку сайта, можно добавить тэг , который подскажет браузеру, что указанный ресурс необходимо загрузить с более высоким приоритетом. Например, можно начать загружать шрифты, не дожидаясь окончания загрузки CSS-файла.

Есть только одна маленькая проблема: при неправильном использовании, такой подход может сделать только хуже. Например, если предзагружать очень много ресурсов, то это просто будет тормозить загрузку остальных ресурсов, необходимых для первого рендера страницы.

Также стоит следить за тем, чтобы в предзагрузке не было файлов, которые не используются при первом рендере, иначе вы просто замедлите первую отрисовку.

И последний нюанс — CORS режим предзагрузки и последующего запроса должны совпадать, иначе браузер просто загрузит его дважды.

[EN] Команда разработки Wix рассказала, как они постепенно шли к улучшению метрик Web Vitals для сайтов, созданных на их платформе.

Раньше, для сокращения серверных расходов, вся страница генерировалась на стороне клиента. Но несколько лет назад Wix перешли на серверный рендеринг, что позволило улучшить СЕО и производительность, но увеличило нагрузку на сервер, поскольку все страницы генерировались на лету.

Чтобы решить эту проблему, сначала они разработали свое CDN-решение, которое позволило кэшировать статические части страниц и просто добавлять к ним динамические. А затем им удалось и совсем убрать динамические данные из HTML, загружая их с сервера в формате JSON. Это позволило им использовать CDN-провайдеров с большим гео-охватом, а браузерам — кэшировать 13% запросов. Последними улучшениями инфраструктуры были переход на HTTP/2, сжатие Brotli и динамический выбор CDN.

Александр Поломодов — директор отдела разработки цифровой экосистемы банка Тинькофф — поделился списком литературы, которую стоит изучить всем, кто хочет глубже разобраться в проектировании ПО и не хочет ограничиваться только лишь «книгой с кабанчиком».

В списке 16 книг, начиная от основ DDD и распределенных систем до Микросервисов с управлением командами SRE.
По каждой книге дано краткое резюме, а на какие-то автор даже делал более развёрнутые обзоры.

Чтение книг конечно не заменит реального опыта, но с чего то же надо начинать.

[EN] Какие могут быть причины для завершения Node.js приложения, кроме банальной ошибки? Перехват таких событий может понадобится для более плавной остановки процесса: можно сохранить содержимое памяти на диск или откатить незавершённые изменения.

Что это за события? В первую очередь, они возникают прямо в коде приложения: намеренный вызов process.exit, непойманное исключение (uncaughtException), необработанный реджект из промиса или исключение в асинхронной функции (unhandledPromiseRejection), ну или совсем экзотичный — вызов события error через Event Emitter.

Во-вторую очередь, это Сигналы — специальные коды операционной системы, которыми могут обмениваться программы. Как и события из первой группы, большинство сигналов можно перехватить и предотвратить, с помощью обработчика process.on с соответствующим названием события. Исключениями являются сигналы SIGKILL и SIGSTOP — они настолько мощные, что их не остановить.

[EN] Сейчас редко можно встретить React-компоненты использующие синтаксис классов. А кто нибудь помнит, что было до классов?
Для тех кто не видел «другой React» в этой статье автор рассмотрел, как раньше выглядел синтаксис библиотеки, какие в нем были проблемы и как новый синтаксис решал их.

Например, изначально функциональность между компонентами шарили с помощью миксинов, которые подмешивали пропсы из одного компонента другому и тем самым только усложняли поддержку. Им на смену пришли компоненты высшего порядка — HOC'и — порождая бесконечный уровень вложенности.

Другой проблемой была необходимость явного биндинга методов компонентов для обращения к this внутри них. Сейчас мы можем наблюдать, как обе этих проблемы элегантно решились с помощью хуков. Теперь осталось решить проблемы хуков и тогда точно заживём!