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

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

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

[EN] Автор попытался найти ответ на вопрос: являются ли разработчики инженерами. 
Есть мнение, что разработка — это не инженерия, поскольку не следует инженерным стандартам, таким как лицензирование, сертификация и строгие требования при проектировании.
И это частично правда, так как стандарты разработки ПО более динамичны и часто меняются, поэтому применение инженерных практик тут просто невозможно. Особенно заметно это стало с развитием гибких методологий и экстремального программирования в 90-х.

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

[EN] Один из наболевших вопросов в React-комьюнити: может ли Context API заменить Redux?
Короткий ответ — НЕТ.

Context API предназначен для упрощения передачи данных дочерним компонентам. При любом изменении данных происходит ререндер всех подписанных на них компонентов. Это отлично подходит для редко обновляемых данных: например, для локализации и темизации приложений.

Redux же — это полноценный менеджер состояния приложения. Он предоставляет возможность компонентам подписываться на изменения только определенной части глобального состояния и добавлять сайд-эффекты на изменения состояния. Он имеет ряд утилит, помогающих понять, как и почему изменилось состояние приложения.
Redux может использоваться с любым фреймворком или ванильным JavaScript, поэтому он подходит даже для коммуникации между микрофронтендами.
Redux Toolkit позволяет избежать бойлерплейта, который может напугать новичков.

Частично, функциональность Редакса может быть воспроизведена с помощью комбинации хуков useReducer, useMemo и React.memo, но это будет просто «переизобретением колеса». С другой стороны, можно будет не тащить в бандл Редакс.

Статья должна была дать однозначный ответ на главный вопрос современного фронтенда, но принесла ещё больше вопросов.

[EN] Можно ли поддерживать ПО, написанное лет пять назад без существенного обновления стэка? Безусловно, цена поддержки и развития будет расти со временем, но не все заказчики готовы вкладываться в глобальный рефакторинг. Код, написанный сегодня, непременно станет легаси через какое-то время. Что можно сделать, чтобы без проблем поддерживать код в течении многих лет?
1. Избегать сложных структур: использовать чистые функции и узкоспециализированные классы. Избегать смешивания логики и данных в объектах;
2. Не бояться создавать новые, маленькие модули с одним или парой экспортов;
3. Избегать добавления к объектам произвольных полей. Соблюдайте консистентность используемых данных. В этом может помощь TypeScript или JSDoc-аннотации. На худой конец, можно описывать структуру в произвольном формате в комментариях или документации.

[EN] Как сверстать тянущийся прямоугольник с соотношением сторон 16:9?
Если у вас чёрный пояс по вёрстке, то вы знаете, что для этого можно использовать свойство padding-top, которое всегда считается от ширины элемента. Делим высоту на ширину и получаем, что для отношения 16:9, padding-top должен быть 56.25%. Не самое очевидное решение, конечно.

Так было раньше, но так больше не может продолжаться. Встречайте свойство aspect-ratio, которое решает именно эту проблему. Просто задаём aspect-ratio: 16 / 9 и высота посчитается автоматически. Но и тут не обошлось без сюрпризов: если элемент вдруг начнёт превышать высоту контейнера, то он спокойно вылезет за её пределы, наплевав на соотношение сторон.

Свойство дошло до стадии релиза во все основные браузеры: Chromium 88, Firefox 87, и Safari Technology Preview 118.

Исследование, которое в очередной раз показало, что хорошая фотография в резюме положительно влияет на вероятность найма. Не сильно, но влияет.

Оказалось, что люди обращают внимание на внешность, пол и расу, даже если считают себя непредвзятыми.
На канале Winterview я уже писал, как сделать нормальную фотку для резюме.