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

Defront (при поддержке Зарплата.ру) — про фронтенд-разработку и не только

Логотип телеграм канала @defront — Defront (при поддержке Зарплата.ру) — про фронтенд-разработку и не только D
Логотип телеграм канала @defront — Defront (при поддержке Зарплата.ру) — про фронтенд-разработку и не только
Адрес канала: @defront
Категории: Технологии
Язык: Русский
Количество подписчиков: 5.03K
Описание канала:

Ламповый канал про фронтенд и не только. Всё самое полезное для опытных web-разработчиков. При поддержке Зарплата.ру
Обсуждение постов @defrontchat
Также советую канал @webnya

Рейтинги и Отзывы

3.00

2 отзыва

Оценить канал defront и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

0

2 звезд

0

1 звезд

1


Последние сообщения 25

2021-04-17 02:27:42 Хью Хауорт написал обзор современных инструментов сборки — "Comparing the New Generation of Build Tools".

В статье рассказывается про esbuild, Snowpack, Vite и wmr. Esbuild — это очень шустрый сборщик, написанный на Go. Snowpack, Vite и wmr — сборщики нового поколения. Они полагаются на нативную модульную систему JavaScript, устраняя шаг сборки приложения во время разработки.

Snowpack позволяет подключать и гибко настраивать разные сборщики для production-сборки проекта. Vite, наоборот, исповедует принцип zero-configuration, предоставляя набор настроек, которые подойдут большинству проектов. Wmr — самое лёгкое решение, но из коробки поддерживает только React и Preact. Esbuild в этом сравнении стоит особняком, так как это обычный, но очень быстрый сборщик.

Большая и хорошая статья. Очень рекомендую почитать.

#bundle #tool

https://css-tricks.com/comparing-the-new-generation-of-build-tools/
1.7K viewsAlexander Myshov, edited  23:27
Открыть/Комментировать
2021-04-16 08:41:11 Андреа Гиммарачи написал статью о том, почему некорректно называть JavaScript-классы синтаксическим сахаром для прототипного наследования — "JS classes are not 'just syntactic sugar'".

В статье говорится о том, что хотя многие фичи JavaScript-классов можно эмулировать в синтаксисе ES5, они будут уступать в скорости и безопасности. Кроме того существуют вещи, которые нельзя эмулировать с помощью традиционного прототипного наследования. Например, с помощью обычных функций нельзя отнаследоваться от встроенных типов, также невозможно полностью эмулировать поведение super().

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

#js

https://webreflection.medium.com/js-classes-are-not-just-syntactic-sugar-28690fedf078
https://www.reddit.com/r/javascript/comments/mq9upa/js_classes_are_not_just_syntactic_sugar/ (обуждение на Reddit)
2.3K viewsAlexander Myshov, edited  05:41
Открыть/Комментировать
2021-04-15 00:48:08 Никита Прокопов написал статью про проблему размера шрифтов, заданных с помощью пунктов, — "Font size is useless; let’s fix it".

Во многих редакторах размер шрифта по умолчанию задаётся в пунктах. Пункт — это метрика из традиционной типографики, составляющая 1/72 дюйма. Проблема в том, что на разных мониторах, один и тот же шрифт, заданный с помощью этой величины, выглядит по-разному. Поэтому для настройки текста в редакторах Никита предлагает использовать метрику, определяющую высоту заглавной буквы.

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

Хорошая статья. Рекомендую почитать всем, кому интересна тема типографики.

#typography

https://tonsky.me/blog/font-size/
https://habr.com/ru/company/vdsina/blog/550046/ (на русском языке)
1.8K viewsAlexander Myshov, edited  21:48
Открыть/Комментировать
2021-04-14 01:08:41 Сегодня вышел Chrome 90. Пит Лепаж и Джеселин Ин рассказали про новинки релиза.

В CSS была добавлена поддержка нового свойства overflow: clip из спецификации CSS Overflow. Это свойство позволяет скрыть часть контента, вышедшего за пределы контейнера при его переполнении, не переключая контекст форматирования, тем самым улучшая производительность рендеринга по сравнению с overflow: hidden.

В Chrome 74 был добавлен Feature Policy API для объявления списка API, которые разрешается использовать на странице. В Chrome 90 этот API был переименован в Permissions Policy, также был изменён синтаксис для определения параметров.

Появилась поддержка декларативного Shadow DOM, благодаря которому web-компоненты можно объявлять в коде HTML-страницы без использования императивного API. Declarative Shadow DOM полезен для улучшения SEO страниц, на которых используются web-компоненты.

В версии браузера для десктопа была добавлена поддержка видеокодека AV1, оптимизированного для видеоконференций.

В Chrome 90 (и во всех будущих версиях) при переходе на сайт без указания протокола теперь будет использоваться HTTPS, а не HTTP.

В Chrome DevTools был добавлен инструмент для визуальной отладки флексбоксов. Появилась экспериментальная поддержка отображения дерева доступности страницы. Добавлен новый оверлей, отображающий метрики Web Vitals для текущей страницы. Добавлена эмуляция медиафичи color-gamut, с помощью которой можно проверить, поддерживается ли дисплеем заданное цветовое пространство.

#chrome #release

https://developer.chrome.com/blog/new-in-chrome-90/
https://developer.chrome.com/blog/new-in-devtools-90/
2.2K viewsAlexander Myshov, edited  22:08
Открыть/Комментировать
2021-04-12 20:28:52 Недавно на сайте документации Microsoft был опубликован курс, посвящённый разработке на TypeScript, — "Build JavaScript applications using TypeScript".

Курс бесплатный, нужно только зарегистрироваться для сохранения прогресса обучения. Обучение разбито на модули: введение, работа с переменными, функциями, интерфейсами, классами, использование дженериков, работа с внешними библиотеками, организация кода с помощью неймспейсов. Есть перевод на русский язык (очень похоже, что это машинный перевод).

В общем, выглядит интересно. Каких-то хардкорных вещей нет, так что подойдёт всем, кто только начинает знакомиться с TypeScript. Требуется только базовое знание JS и HTML.

#typescript

https://docs.microsoft.com/en-us/learn/paths/build-javascript-applications-typescript/
1.3K viewsAlexander Myshov, 17:28
Открыть/Комментировать
2021-04-12 09:21:14 Клемент Видал написал пост о том, как создать RPC-механизм с помощью Proxy — "Use Javascript Proxy for isolated context intercommunication".

Идея из статьи похожа на реализацию утилиты comlink, которая используется для упрощения работы с веб-воркерами. Реализация заключается в подмене вызова метода postMessage с помощью обращения к методу объекта, завёрнутого в Proxy (ES2015). То есть событийная модель работы с веб-воркером оказывается скрыта за вызовом методов:

const dummyData = [1, 4, 5];
const proxyService = createProxy("DataService");
const processedData = await proxyService.processData(dummyData);

Этот подход можно использовать не только для организации взаимодействия с веб-воркером, но и между основным потоком и потоком рендера в Electron API и content script и background script в WebExtension API.

#js

https://dev.to/clementvidal/use-es6-proxy-for-isolated-context-intercommunication-mc1
1.4K viewsAlexander Myshov, edited  06:21
Открыть/Комментировать
2021-04-11 00:55:16 Джейк Арчибальд опубликовал седьмую часть из серии статей про производительность сайтов команд Формулы-1 — "Who has the fastest F1 website in 2021? Part 7".

В этой статье исследуется сайт команды Haas. Первый рендер происходит через девять секунд после начала загрузки страницы. Тем не менее сайт остаётся неюзабельным, так как на протяжении следующих десяти секунд происходит сдвиг контента из-за инициализации слайдера и загрузки изображений.

На сайте вместо одного большого CSS-файла загружается тридцать небольших. Это приводит к небольшой задержке рендеринга (где-то полсекунды). Также небольшие файлы проигрывают в степени сжатия большим файлам. Во время загрузки прыгает контент, это связано с инициализацией слайдера, который начинает загружать изображения только после полной загрузки и инициализации скриптов. Сдвига контента можно было бы избежать, если бы слайдер был реализован с помощью обычного HTML и CSS scroll snap.

После всех исправлений время первого рендеринга удалось снизить с 9 до 3 секунд.

#performance

https://jakearchibald.com/2021/f1-perf-part-7/
2.0K viewsAlexander Myshov, edited  21:55
Открыть/Комментировать
2021-04-10 00:55:52 Тим Ван Дер Лип из команды разработки Chrome написал статью о миграции DevTools на TypeScript — "DevTools architecture refresh: migrating DevTools to TypeScript".

Кодовой базе Chrome DevTools уже более 10 лет. За это время она выросла до 150 тысяч строк кода и пережила несколько больших изменений. Например, в 2013 году в ней стал использоваться Closure Compiler в качестве тайпчекера. Но в 2019 году было решено отказаться от Closure в пользу TypeScript, так как Closure не обеспечивал должный уровень типобезопасности.

Автоматизировать миграцию не получилось, поэтому весь процесс занял 13 месяцев. Для распараллеливания работы между инженерами во все файлы был добавлен @ts-nocheck; процесс тайпскрификации заключался в постепенном удалении этих директив.

Разработчики остались довольны результатом. Единственная проблема, с которой пока не удалось справиться, — увеличившееся время сборки.

#typescript #migration

https://developer.chrome.com/blog/migrating-to-typescript/
2.2K viewsAlexander Myshov, edited  21:55
Открыть/Комментировать
2021-04-09 00:46:55 Джейк Арчибальд написал шестую часть из серии статей про анализ производительности сайтов команд Формулы-1 — "Who has the fastest F1 website in 2021? Part 6".

В этой статье Джейк исследует сайт Ferrari. Сайт загружается очень медленно — за 38 секунд. Основная проблема заключается в большом объёме загружаемого JavaScript. Один из скриптов весит более мегабайта в gzip (более 6 мегабайт в разжатом виде). На бюджетных смартфонах он загружается долго и блокирует основной поток браузера примерно на 5 секунд из-за выполнения и парсинга большого количества исходного текста.

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

После всех исправлений время первого рендеринга удалось снизить с 38 до 3 секунд.

#performance

https://jakearchibald.com/2021/f1-perf-part-6/
1.5K viewsAlexander Myshov, edited  21:46
Открыть/Комментировать
2021-04-08 09:25:57 Никита Ступин из Huawei написал статью про атаку "Prototype pollution" — "JavaScript prototype pollution: практика поиска и эксплуатации".

Prototype pollution — это атака, с помощью которой изменяют прототип базовых объектов ( Object.prototype, Function.prototype, Array.prototype ) для модификации хода выполнения программы. Например, если код обращается к свойству window.foo и выполняет его содержимое с помощью eval, то в некоторых ситуациях можно добиться выполнения произвольного кода, переписав в прототипе объекта свойство foo ( Object.prototype.foo = 'alert(1)' ). Чаще всего на клиенте prototype pollution используется для реализации XSS с помощью изменения GET-параметров.

В статье очень детально разбирается механизм работы этой атаки на клиенте и сервере. Есть пример поиска и эксплуатации prototype pollution на практике и советы по защите.

Большая и интересная статья. Рекомендую почитать.

#js #security

https://habr.com/ru/company/huawei/blog/547178/
2.0K viewsAlexander Myshov, edited  06:25
Открыть/Комментировать