bootg.com »
United States »
Defront (при поддержке Зарплата.ру) — про фронтенд-разработку и не только » Telegram Web
Разработчики Blackbird рассказали, почему они перестали использовать Google Fonts и стали хостить шрифты на своём сервере — "Self-Hosting Google Fonts".
При использовании Google Fonts браузер сначала должен разрезолвить основной домен, установить SSL-соединение, а затем разрезолвить домен, на котором находятся статические ресурсы. Так как с Google Fonts грузится CSS, этот процесс блокирует рендеринг страницы. В статье говорится, что в худшем случае LCP (Largest Contentful Paint) из-за этого увеличивался на 1.3 секунды. Чтобы предотвратить блокировку рендеринга, шрифты можно перенести на свой сервер. В статье для этого рекомендуют использовать сервис Google Webfonts Helper Tool.
Полезная статья рекомендую почитать всем, кто интересуется производительностью.
#performance
https://tryblackbird.com/blog/self-hosting-google-fonts
При использовании Google Fonts браузер сначала должен разрезолвить основной домен, установить SSL-соединение, а затем разрезолвить домен, на котором находятся статические ресурсы. Так как с Google Fonts грузится CSS, этот процесс блокирует рендеринг страницы. В статье говорится, что в худшем случае LCP (Largest Contentful Paint) из-за этого увеличивался на 1.3 секунды. Чтобы предотвратить блокировку рендеринга, шрифты можно перенести на свой сервер. В статье для этого рекомендуют использовать сервис Google Webfonts Helper Tool.
Полезная статья рекомендую почитать всем, кто интересуется производительностью.
#performance
https://tryblackbird.com/blog/self-hosting-google-fonts
Tryblackbird
Self-Hosting Google Fonts
We found self-hosting Google Fonts can improve Largest Contentful Paint by as much as 1.3 seconds
Патрик Лаук опубликовал статью про использование медиафич для определения устройств ввода — "Interaction Media Features and Their Potential (for Incorrect Assumptions)".
В разделе Interaction Media Features CSS-спеки Media Queries Level 4 определяются несколько медиафич, с помощью которых можно проверить поддержку hover, тача, стилуса и соответствующим образом адаптировать интерфейс.
Медифичи
Иногда этими медиафичами пользуются неправильно и отключают поддержку определённых типов устройств ввода. Это неудачный подход, так как к девайсу может быть подключено новое устройство ввода, после того как сайт уже был загружен.
Статья большая и полезная. Рекомендую почитать.
#css #mobile
https://css-tricks.com/interaction-media-features-and-their-potential-for-incorrect-assumptions/
В разделе Interaction Media Features CSS-спеки Media Queries Level 4 определяются несколько медиафич, с помощью которых можно проверить поддержку hover, тача, стилуса и соответствующим образом адаптировать интерфейс.
Медифичи
pointer
и hover
предоставляют информацию о возможностях ввода того устройства, которое браузер считает основным. Медиафичи any-pointer
и any-hover
представляют обобщённую информацию о всех подключенных устройств ввода. Последние две медиафичи наиболее полезны, так как к девайсу, на котором отображается сайт, может быть подключено несколько устройств ввода. Например, к iPad могут быть одновременно подключены Apple Pencil, bluetooth-клавиатура и мышь.Иногда этими медиафичами пользуются неправильно и отключают поддержку определённых типов устройств ввода. Это неудачный подход, так как к девайсу может быть подключено новое устройство ввода, после того как сайт уже был загружен.
Статья большая и полезная. Рекомендую почитать.
#css #mobile
https://css-tricks.com/interaction-media-features-and-their-potential-for-incorrect-assumptions/
CSS-Tricks
Interaction Media Features and Their Potential (for Incorrect Assumptions) | CSS-Tricks
The Media Queries Level 4 Interaction Media Features — pointer, hover, any-pointer and any-hover — are meant to allow sites to implement different styles and functionality (either CSS-specific interactivity like :hover, or JavaScript behaviors, when queried…
Forwarded from Вебня (Sergey Rubanov)
История JavaScript в инфографике
Завтра JavaScript исполняется 25, и JetBrains опубликовали сайт с временной шкалой, на которой отражены основные вехи в развитии языка.
https://www.jetbrains.com/lp/javascript-25/
upd: есть ещё русскоязычная версия
Завтра JavaScript исполняется 25, и JetBrains опубликовали сайт с временной шкалой, на которой отражены основные вехи в развитии языка.
https://www.jetbrains.com/lp/javascript-25/
upd: есть ещё русскоязычная версия
JetBrains: Developer Tools for Professionals and Teams
25 years of JavaScript history | JetBrains: Developer Tools for Professionals and Teams
Celebrate JavaScript’s 25th anniversary with JetBrains! Follow the timeline of the pivotal moments throughout JavaScript’s history.
В блоге Catchjs была опубликована статья про анализ производительности миллиона сайтов — "We rendered a million web pages to find out what makes the web slow".
В исследовании оценивается влияние на производительность разных факторов: используемая версия HTTP, количество запросов на странице, используемые библиотеки и т.п.
Для меня самым интересным показался анализ JS-библиотек. Список библиотек, которые встречаются чаще всего: на первом месте стоит jQuery, на втором — Google Analytics, на третьем — Google Ads. Список библиотек, которые больше всего влияют на TTI: jQuery, Froogaloop, WooCommerce, Swiper, Visual Composer prettyPhoto. Список библиотек, которые больше всего влияют на время полной загрузки страницы: Baidu Statistics, Amazon Publisher Services, jQuery, VK Open API, Zopim.
Интересная статья. Рекомендую всем, кто интересуется темой производительности.
#performance #research
https://catchjs.com/Blog/PerformanceInTheWild
В исследовании оценивается влияние на производительность разных факторов: используемая версия HTTP, количество запросов на странице, используемые библиотеки и т.п.
Для меня самым интересным показался анализ JS-библиотек. Список библиотек, которые встречаются чаще всего: на первом месте стоит jQuery, на втором — Google Analytics, на третьем — Google Ads. Список библиотек, которые больше всего влияют на TTI: jQuery, Froogaloop, WooCommerce, Swiper, Visual Composer prettyPhoto. Список библиотек, которые больше всего влияют на время полной загрузки страницы: Baidu Statistics, Amazon Publisher Services, jQuery, VK Open API, Zopim.
Интересная статья. Рекомендую всем, кто интересуется темой производительности.
#performance #research
https://catchjs.com/Blog/PerformanceInTheWild
В понятия "переменная" и "кастомное свойство" часто вкладывают один и тот же смысл, но на самом деле между ними есть разница. Шима Видас рассказал, чем они отличаются в статье "CSS custom properties are not variables".
В спецификации CSS эти два термина определяются так (моя интерпретация): "кастомное свойство" — это определение некоторого именованного значения, которое будет использоваться в будущем
В статье есть ещё несколько других примеров, рекомендую заглянуть.
#css
https://webplatform.news/issues/2020-12-04
В спецификации CSS эти два термина определяются так (моя интерпретация): "кастомное свойство" — это определение некоторого именованного значения, которое будет использоваться в будущем
--primary-color: #fff
, "переменная" — это механизм для получения по имени определённого ранее значения var(--primary-color)
. Такое отличие полезно, потому что благодаря ему мы можем говорить про "переменные с фоллбеком" var(--primary-color, #eee)
. У кастомных свойств, как и у любых других свойств, невозможно задать фоллбек. Также мы можем "определить кастомное свойство на элементе". Переменные в CSS не определяются, но используются в других свойствах.В статье есть ещё несколько других примеров, рекомендую заглянуть.
#css
https://webplatform.news/issues/2020-12-04
webplatform.news
Web Platform News
News content for web developers written by Šime Vidas
Мэтт Хоббс рассказал о нюансах использования CSS-свойства
Свойство
Мэтт пишет, что на сайте правительства Великобритании, над которым он работал, используется
Очень интересная статья. Рекомендую почитать всем, кто использует web-шрифты.
#performance #ux #fonts
https://calendar.perfplanet.com/2020/a-font-display-setting-for-slow-connections/
font-display
с учётом производительности и UX — "A font-display setting for slow connections".Свойство
font-display
определяет стратегию рендеринга web-шрифта и его фоллбэка: auto
, block
, swap
, fallback
, optional
. С точки зрения скорости отображения контента наиболее интересны последние три значения. При использовании swap
браузер рендерит фоллбэк-шрифт сразу же и ждёт бесконечное количество времени, пока не загрузится шрифт, после загрузки происходит замена шрифта. Значение fallback
похоже на swap
, но браузер ждёт три секунды для замены шрифта. Самое агрессивное свойство optional
, если в течение 100мс браузер не загрузит шрифт, то будет отображаться фоллбэк без подмены. Загруженный шрифт будет взят из кэша при переходе на новую страницу.Мэтт пишет, что на сайте правительства Великобритании, над которым он работал, используется
font-display: fallback
, чтобы пользователи не сталкивались с внезапным сдвигом контента.Очень интересная статья. Рекомендую почитать всем, кто использует web-шрифты.
#performance #ux #fonts
https://calendar.perfplanet.com/2020/a-font-display-setting-for-slow-connections/
Web Performance Calendar
A font-display setting for slow connections
Swap? Fallback? Optional? Which font-display setting should you pick? Let Matt walk you through the considerations.
Месяц назад проходила конференция для разработчиков виртуальных машин, на которой Вячеслав Егоров рассказал про историю развития языка программирования Dart — "10 Years of Dart".
Dart начал разрабатываться инженерами Google в 2011 году. Первая версия не была статически типизируемой в обычном смысле, в ней была поддержка опциональных типов, и все оптимизации выполнялись на уровне JIT-компилятора (то есть во время выполнения кода). В 2015 году с появлением Flutter текущая имплементация языка не могла обеспечить хорошую производительность на iOS, потому что Apple запрещает использовать JIT-компиляцию в обычных программах. Команда Dart попыталась реализовать AOT-компиляцию (то есть до этапа выполнения кода) на базе существующего JIT-компилятора, но столкнулась с проблемами. Для решения этих проблем Dart должен был стать полноценным статически типизируемым языком. Над второй мажорной версией разработчики работали три года — Dart 2.0 зарелизился в 2018 году.
Доклад очень технический и довольно хардкорный. Рекомендую посмотреть, если хотите узнать больше про Dart.
#dart #history #internals #talk
https://www.youtube.com/watch?v=e-58C8aGBM4
Dart начал разрабатываться инженерами Google в 2011 году. Первая версия не была статически типизируемой в обычном смысле, в ней была поддержка опциональных типов, и все оптимизации выполнялись на уровне JIT-компилятора (то есть во время выполнения кода). В 2015 году с появлением Flutter текущая имплементация языка не могла обеспечить хорошую производительность на iOS, потому что Apple запрещает использовать JIT-компиляцию в обычных программах. Команда Dart попыталась реализовать AOT-компиляцию (то есть до этапа выполнения кода) на базе существующего JIT-компилятора, но столкнулась с проблемами. Для решения этих проблем Dart должен был стать полноценным статически типизируемым языком. Над второй мажорной версией разработчики работали три года — Dart 2.0 зарелизился в 2018 году.
Доклад очень технический и довольно хардкорный. Рекомендую посмотреть, если хотите узнать больше про Dart.
#dart #history #internals #talk
https://www.youtube.com/watch?v=e-58C8aGBM4
YouTube
10 years of Dart
Slides (with speaker notes) https://mrale.ph/talks/vmil2020/
Dart (http://dart.dev) might be the only contemporary programming language that changed its core principles so radically between two major versions. 10 years ago, in 2010, it was born as a dynamically…
Dart (http://dart.dev) might be the only contemporary programming language that changed its core principles so radically between two major versions. 10 years ago, in 2010, it was born as a dynamically…
Пролетели две недели с момента последней публикации про канал для патронов. За это время в Defront Plus было опубликовано много интересных постов:
— Почему в TypeScript следует использовать union-типы вместо enum
— Малоизвестные JavaScript-проекты в 2020 году
— Обход проблемы с DST при работе с нативными датами в JS
— Мифические "быстрые" web-страницы
— Опыт миграции на Next.js ста фронтенд-проектов
— Адаптация кода под разные окружения с помощью Babel-трансформаций
— Преимущества использования Electron.js
— Управление внешними зависимостями
— Производительность попапов с превью страниц Wikipedia
— Улучшение производительности фронтенда новой платформы BBC
Становитесь патроном канала на Patreon, чтобы получить доступ к дополнительным постам в Defront Plus. На данный момент Patreon мой единственный источник дохода; все донаты идут на покупку еды, оплату аренды квартиры и т.п.
Спасибо всем, кто читает и поддерживает Defront!
https://www.patreon.com/myshov
— Почему в TypeScript следует использовать union-типы вместо enum
— Малоизвестные JavaScript-проекты в 2020 году
— Обход проблемы с DST при работе с нативными датами в JS
— Мифические "быстрые" web-страницы
— Опыт миграции на Next.js ста фронтенд-проектов
— Адаптация кода под разные окружения с помощью Babel-трансформаций
— Преимущества использования Electron.js
— Управление внешними зависимостями
— Производительность попапов с превью страниц Wikipedia
— Улучшение производительности фронтенда новой платформы BBC
Становитесь патроном канала на Patreon, чтобы получить доступ к дополнительным постам в Defront Plus. На данный момент Patreon мой единственный источник дохода; все донаты идут на покупку еды, оплату аренды квартиры и т.п.
Спасибо всем, кто читает и поддерживает Defront!
https://www.patreon.com/myshov
Майкл Бутнер и Кенджи Багу из команды разработки Google Chrome рассказали про новый пропозал, который поможет улучшить скорость загрузки сайтов за счёт префетчинга ресурсов с учётом приватности — "Continuing our journey to bring instant experiences to the whole web".
Прочитал статью несколько раз, чтобы полностью разобраться в этом пропозале. Имхо, его лучше всего объяснить на примере. Представьте, что вы Google и хотите, чтобы у пользователей браузера улучшилась скорость загрузки сайтов. Можно делать разные трюки, например, предсказывать, с какой вероятностью пользователь будет кликать по ссылкам, и в зависимости от этого заранее загружать ресурсы нужных сайтов. Проблема в том, что пользователь на самом деле не выразил своё желание перейти по этой ссылке, но его IP-адрес, куки и другая информация будет передана третьей стороне с отправленными запросами за ресурсами, что очень плохо для приватности.
Предложение описывает подход, с помощью которого можно обеспечить предзагрузку ресурсов, не раскрывая информацию о пользователе. Предполагается, что этот механизм будет работать с помощью HTTP-туннелей с внешним прокси (CONNECT proxy). То есть между браузером и сайтом будет находится прокси, который не позволит утечь пользовательским данным.
Ребята из Google провели успешный эксперимент в Chrome для Android, который показал, что использование префетча с помощью CONNECT proxy ускорило первоначальное отображение сайтов на 40%.
Команда разработчиков призывает всех желающих поучаствовать в обсуждении и разработке полноценной спецификации использования CONNECT proxy с префетчем.
#performance #proposal #chromium
https://blog.chromium.org/2020/12/continuing-our-journey-to-bring-instant.html
Прочитал статью несколько раз, чтобы полностью разобраться в этом пропозале. Имхо, его лучше всего объяснить на примере. Представьте, что вы Google и хотите, чтобы у пользователей браузера улучшилась скорость загрузки сайтов. Можно делать разные трюки, например, предсказывать, с какой вероятностью пользователь будет кликать по ссылкам, и в зависимости от этого заранее загружать ресурсы нужных сайтов. Проблема в том, что пользователь на самом деле не выразил своё желание перейти по этой ссылке, но его IP-адрес, куки и другая информация будет передана третьей стороне с отправленными запросами за ресурсами, что очень плохо для приватности.
Предложение описывает подход, с помощью которого можно обеспечить предзагрузку ресурсов, не раскрывая информацию о пользователе. Предполагается, что этот механизм будет работать с помощью HTTP-туннелей с внешним прокси (CONNECT proxy). То есть между браузером и сайтом будет находится прокси, который не позволит утечь пользовательским данным.
Ребята из Google провели успешный эксперимент в Chrome для Android, который показал, что использование префетча с помощью CONNECT proxy ускорило первоначальное отображение сайтов на 40%.
Команда разработчиков призывает всех желающих поучаствовать в обсуждении и разработке полноценной спецификации использования CONNECT proxy с префетчем.
#performance #proposal #chromium
https://blog.chromium.org/2020/12/continuing-our-journey-to-bring-instant.html
Chromium Blog
Continuing our journey to bring instant experiences to the whole web
Speed has always been a core tenet of Chrome. We care about speed, not only because it helps our users get things done quicker, but because...
Forwarded from Веб-стандарты (Веб-стандарты)
Прямая трансляция Chrome Dev Summit стартует сегодня в 20:30 (GMT+3). Первый день с 13 докладами посвящён перфомансу, Core Web Vitals и приватности.
Трансляция https://youtu.be/NkIi7h8NnS4
Программа https://developer.chrome.com/devsummit/schedule/
Трансляция https://youtu.be/NkIi7h8NnS4
Программа https://developer.chrome.com/devsummit/schedule/
HTTP Archive второй год подряд публикует отчёт о текущем состоянии веба — "Web Almanac 2020".
Альманах поделён на 22 главы, которые посвящены текущему состоянию дел в вебе: контенту (CSS, JavaScript, шрифты), пользовательскому опыту (доступность, производительность, SEO, приватность, безопасность, мобильный web), инструментам публикации (CMS, ecommerce, Jamstack) и распространению контента (сжатие, кеширование, Resource Hints, HTTP/2). Над проектом работали 116 специалистов, среди которых есть Рик Вискоми, Лия Веру, Тим Кадлек, Гарри Робертс и другие. Общий объём статей около 500 страниц.
В альманахе есть много информации и разных инсайтов, например, в самом большом HTML-атрибуте
#report #web
https://almanac.httparchive.org/en/2020/
Альманах поделён на 22 главы, которые посвящены текущему состоянию дел в вебе: контенту (CSS, JavaScript, шрифты), пользовательскому опыту (доступность, производительность, SEO, приватность, безопасность, мобильный web), инструментам публикации (CMS, ecommerce, Jamstack) и распространению контента (сжатие, кеширование, Resource Hints, HTTP/2). Над проектом работали 116 специалистов, среди которых есть Рик Вискоми, Лия Веру, Тим Кадлек, Гарри Робертс и другие. Общий объём статей около 500 страниц.
В альманахе есть много информации и разных инсайтов, например, в самом большом HTML-атрибуте
alt
содержится 15 миллионов символов. На август 2020 года по HTTP/2 было передано 64% запросов. Средний объём страниц вместе со всем содержимым (CSS, JS, изображения) — 1.9Мб.#report #web
https://almanac.httparchive.org/en/2020/
almanac.httparchive.org
The 2020 Web Almanac
The Web Almanac is an annual state of the web report combining the expertise of the web community with the data and trends of the HTTP Archive.
Forwarded from Веб-стандарты (Веб-стандарты)
Прямая трансляция второго дня Chrome Dev Summit стартует сегодня в 20:30 (GMT+3). В программе 13 докладов про DevTools, CSS Houdini, WebAssembly, PWA, Workbox, SEO и будущее веба.
Трансляция https://youtu.be/ggVsEl7xl9g
Программа https://developer.chrome.com/devsummit/schedule/
Трансляция https://youtu.be/ggVsEl7xl9g
Программа https://developer.chrome.com/devsummit/schedule/
В блоге debugbear было опубликовано исследование проблем производительности интерфейса Google Cloud — "Why is the Google Cloud UI so slow?".
Google Cloud — это SPA, написанное на Angular. Оно включает в себя несколько страниц, которые загружают по 4-5Мб сжатого JavaScript-кода. Основное содержимое страницы появляется через шесть секунд после начала загрузки страницы.
Основные идеи из статьи. Для SPA очень критично время выполнения кода. Чем больше бандл, тем больше времени требуется на его парсинг, компиляцию, инициализацию, поэтому очень важно не заставлять пользователей скачивать лишний код. В Google Cloud на момент инициализации страницы используется только 50% от всего загруженного кода. Также в разных бандлах дублируются одни и те же компоненты и конфигурационный код. Ещё в статье есть рекомендация загружать второстепенный контент (например, меню) только тогда, когда он, действительно, будет нужен.
Хорошая статья. Рекомендую почитать всем, кто интересуется темой производительности.
#performance #js #bundle
https://www.debugbear.com/blog/slow-google-cloud-ui
Google Cloud — это SPA, написанное на Angular. Оно включает в себя несколько страниц, которые загружают по 4-5Мб сжатого JavaScript-кода. Основное содержимое страницы появляется через шесть секунд после начала загрузки страницы.
Основные идеи из статьи. Для SPA очень критично время выполнения кода. Чем больше бандл, тем больше времени требуется на его парсинг, компиляцию, инициализацию, поэтому очень важно не заставлять пользователей скачивать лишний код. В Google Cloud на момент инициализации страницы используется только 50% от всего загруженного кода. Также в разных бандлах дублируются одни и те же компоненты и конфигурационный код. Ещё в статье есть рекомендация загружать второстепенный контент (например, меню) только тогда, когда он, действительно, будет нужен.
Хорошая статья. Рекомендую почитать всем, кто интересуется темой производительности.
#performance #js #bundle
https://www.debugbear.com/blog/slow-google-cloud-ui
Debugbear
Why Is The Google Cloud UI So Slow? | DebugBear
The Google Cloud Console UI is a large JavaScript application. This article investigates how it could be sped up.
Элайна Натарио написала статью с объяснением, в каких случаях для описания изображения нужно использовать
Основные отличия. Атрибут
Полезная статья. Рекомендую почитать.
#html #a11y
https://thoughtbot.com/blog/alt-vs-figcaption
alt
и figcaption
— "Alt vs Figcaption".Основные отличия. Атрибут
alt
используется для буквального описания, что находится на изображении. Эта информация будет использоваться скринридерами при чтении страницы. Элемент figcaption
используется для добавления дополнительной (контекстной) информации к разным объектам на странице: изображения, блоки текста, видео и т.п. Атрибут alt
по умолчанию не отображается на странице, элемент figcatption
отображается. И alt
, и figcaption
можно использовать для описания одного и того же изображения:<figure>
<img
src="cat.jpg"
alt="A black cat sitting on the floor and looking to the side">
<figcaption>
Vasya the cat shows his disrepectful behaviour towards his human
</figcaption>
</figure>
Полезная статья. Рекомендую почитать.
#html #a11y
https://thoughtbot.com/blog/alt-vs-figcaption
thoughtbot
Alt vs Figcaption
Describing images with the alt attribute and figcaption element.
На прошедшем Chrome Dev Summit Хуссейн Джирде и Джейсон Миллер рассказали про использование JavaScript-кода с современным синтаксисом. По мотивам этого доклада была написана статья "Publish, ship, and install modern JavaScript for faster applications".
Многие проекты по инерции используют транспиляцию новых фич JavaScript в ES5, из-за чего страдает производительность в современных браузерах. Транспиляция в ES5 нужна только для старых браузеров, которыми пользуются 5% пользователей. Чтобы доставить разные версии бандлов для современных и старых браузеров, можно использовать паттерн module/nomodule. Для его реализации нужно собрать два бандла: лёгкий для современных браузеров (ES2017) и тяжёлый для устаревших браузеров (ES5). В статье подробно разбирается, как это сделать с помощью webpack и rollup. Ещё в статье есть советы о том, как публиковать npm-пакеты с современным синтаксисом.
Также в докладе/статье был анонсирован новый сервис EStimator.dev, с помощью которого можно оценить прирост производительности сайта от перехода на современный синтаксис.
#js #performance #bundle
https://web.dev/publish-modern-javascript/
Многие проекты по инерции используют транспиляцию новых фич JavaScript в ES5, из-за чего страдает производительность в современных браузерах. Транспиляция в ES5 нужна только для старых браузеров, которыми пользуются 5% пользователей. Чтобы доставить разные версии бандлов для современных и старых браузеров, можно использовать паттерн module/nomodule. Для его реализации нужно собрать два бандла: лёгкий для современных браузеров (ES2017) и тяжёлый для устаревших браузеров (ES5). В статье подробно разбирается, как это сделать с помощью webpack и rollup. Ещё в статье есть советы о том, как публиковать npm-пакеты с современным синтаксисом.
Также в докладе/статье был анонсирован новый сервис EStimator.dev, с помощью которого можно оценить прирост производительности сайта от перехода на современный синтаксис.
#js #performance #bundle
https://web.dev/publish-modern-javascript/
web.dev
Sorry, but this content is no longer available
Ещё один пост про прошедший Chrome Dev Summit. Ингвар Степанян выступил на нём с небольшим докладом про улучшения отладки скомпилированного в WebAssembly C/C++ кода в инструментах разработчика — "Debugging WebAssembly with modern tools".
Поддержка отладки WebAssembly появилась в девтулзах давно, но она была не очень удобна: переменные были обфусцированы, были проблемы с инспектированием структур данных. Также плохо работал маппинг бинарного кода на оригинальный исходный код с помощью сорсмапов.
В конце 2019 года разработчики начали работать над поддержкой DWARF (стандартный формат, использующийся многими отладчиками), который в итоге заменил сорсмапы и улучшил маппинг на исходный код с корректной поддержкой брекпойнтов, улучшил отображение переменных и инспектирование структур данных. В будущем планируется добавить поддержку профилирования кода, улучшить выполнение выражений в консоли и добавить поддержку других языков.
Новый отладчик пока доступен в экспериментальном режиме в Chrome Canary, но он уже используется разработчиками Google Earth.
#debug #webassembly #chromium
https://developers.google.com/web/updates/2020/12/webassembly
Поддержка отладки WebAssembly появилась в девтулзах давно, но она была не очень удобна: переменные были обфусцированы, были проблемы с инспектированием структур данных. Также плохо работал маппинг бинарного кода на оригинальный исходный код с помощью сорсмапов.
В конце 2019 года разработчики начали работать над поддержкой DWARF (стандартный формат, использующийся многими отладчиками), который в итоге заменил сорсмапы и улучшил маппинг на исходный код с корректной поддержкой брекпойнтов, улучшил отображение переменных и инспектирование структур данных. В будущем планируется добавить поддержку профилирования кода, улучшить выполнение выражений в консоли и добавить поддержку других языков.
Новый отладчик пока доступен в экспериментальном режиме в Chrome Canary, но он уже используется разработчиками Google Earth.
#debug #webassembly #chromium
https://developers.google.com/web/updates/2020/12/webassembly
Chrome Developers
Debugging WebAssembly with modern tools - Chrome Developers
Step-by-step overview of the new debugging experience for WebAssembly in Chrome DevTools.
Доминик Тобиас написал статью о подходах к улучшению производительности CSS-in-JS — "How to increase CSS-in-JS performance by 175x".
Заголовок у статьи, конечно, кликбейтный, но написано там всё по делу. В прошлом году на perfplanet было опубликовано исследование с печальными результатами — популярные CSS-in-JS библиотеки, которые в рантайме внедряют на страницу стили (Styled Components, Emotion), могут очень негативно влиять на производительность сложных страниц.
Для улучшения производительности Доминик предлагает использовать CSS-in-JS библиотеки, которые могут извлекать стили из JS на этапе компиляции, также предлагает использовать CSS-переменные для темизации и рекомендует (по возможности) отказаться от динамики в стилях.
Полезная статья. Рекомендую почитать всем, кто использует Styled Components, Emotion и другие подобные библиотеки.
#react #cssinjs #performance
https://dominictobias.medium.com/how-to-increase-css-in-js-performance-by-175x-f30ddeac6bce
Заголовок у статьи, конечно, кликбейтный, но написано там всё по делу. В прошлом году на perfplanet было опубликовано исследование с печальными результатами — популярные CSS-in-JS библиотеки, которые в рантайме внедряют на страницу стили (Styled Components, Emotion), могут очень негативно влиять на производительность сложных страниц.
Для улучшения производительности Доминик предлагает использовать CSS-in-JS библиотеки, которые могут извлекать стили из JS на этапе компиляции, также предлагает использовать CSS-переменные для темизации и рекомендует (по возможности) отказаться от динамики в стилях.
Полезная статья. Рекомендую почитать всем, кто использует Styled Components, Emotion и другие подобные библиотеки.
#react #cssinjs #performance
https://dominictobias.medium.com/how-to-increase-css-in-js-performance-by-175x-f30ddeac6bce
Medium
How to increase CSS-in-JS performance by 175x
I like the convenience of CSS-in-JS especially being able to co-locate styling but I’m not convinced on a few of things:
Forwarded from Wild Wild Web
Я тут наткнулся недавно на очень интересную подборку задач по TypeScript. Особенность этих задач в том, что их нужно решать используя только систему типов TypeScript.
То есть, все задачки, которые там есть, их решение должно происходить в compile-time, никакого кода на TypeScript или JavaScript, кроме, собственно, типов.
И я призадумался. А не сделать ли мне «марафон» постов, где я буду идти по порядку от легкого уровня к сложному и рассказывать о решении, как оно работает, почему и так далее. Как вы на это смотрите? Не будет ли часто по одному посту в день на одну задачу из этой подборки?
Я лично уже прошел почти половину, очень интересно. Можно это всё завернуть в формат более продвинутого изучения типов. Не писать же только интерфейсы, правда? 🙃
В общем, я думаю это отличная идея и с завтрашнего дня, я буду выкладывать сюда решения задач и рассказывать почему решение работает (если, конечно, мы не придём к обратному решению в комментариях). А пока, вы можете поиграться и сами 😎
https://github.com/type-challenges/type-challenges
То есть, все задачки, которые там есть, их решение должно происходить в compile-time, никакого кода на TypeScript или JavaScript, кроме, собственно, типов.
И я призадумался. А не сделать ли мне «марафон» постов, где я буду идти по порядку от легкого уровня к сложному и рассказывать о решении, как оно работает, почему и так далее. Как вы на это смотрите? Не будет ли часто по одному посту в день на одну задачу из этой подборки?
Я лично уже прошел почти половину, очень интересно. Можно это всё завернуть в формат более продвинутого изучения типов. Не писать же только интерфейсы, правда? 🙃
В общем, я думаю это отличная идея и с завтрашнего дня, я буду выкладывать сюда решения задач и рассказывать почему решение работает (если, конечно, мы не придём к обратному решению в комментариях). А пока, вы можете поиграться и сами 😎
https://github.com/type-challenges/type-challenges
GitHub
GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge
Collection of TypeScript type challenges with online judge - type-challenges/type-challenges
Стэфан Джудис написал небольшую статью про малоизвестную фичу
Метод
#js
https://www.stefanjudis.com/today-i-learned/addeventlistener-accepts-functions-and-objects/
addEventListener
— "addEventListener accepts functions and (!) objects".Метод
addEventListener
в качестве обработчика события может использовать функцию или объект, реализующий интерфейс EventListener
(объект с методом handleEvent
). Использование объекта позволяет инкапсулировать обработку событий DOM-элементов в рамках одного класса.class EventHandler {
constructor() {
this.count = 0;
}
handleEvent() {
this.count++;
console.log(`Clicks: ${this.count}`);
}
}
document
.querySelector('button')
.addEventListener(
'click',
new EventHandler()
);
#js
https://www.stefanjudis.com/today-i-learned/addeventlistener-accepts-functions-and-objects/
Stefanjudis
addEventListener accepts functions and (!) objects
addEventListener accepts callback functions but also elements that implement the EventListener interface
Вчера вышел Firefox 84. Релиз в этот раз небольшой, но с полезными улучшениями.
В Firefox 84 появилась нативная поддержка процессоров Apple. Нативная сборка Firefox на процессорах Apple M1 запускается в два раза быстрее, также в нативной сборке гораздо быстрее работает JS.
CSS псевдокласс
В инструментах разработчика с помощью инспектора доступности теперь можно узнать, в каком порядке будет переходить фокус при нажатии на клавишу Tab.
Все ресурсы, загружающиеся с локального хоста (127.0.0.1) вне зависимости от url, считаются загруженными в безопасном контексте.
#firefox #release
https://www.mozilla.org/en-US/firefox/84.0/releasenotes/
https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/84
В Firefox 84 появилась нативная поддержка процессоров Apple. Нативная сборка Firefox на процессорах Apple M1 запускается в два раза быстрее, также в нативной сборке гораздо быстрее работает JS.
CSS псевдокласс
:not()
стал поддерживать сложные селекторы. В Intl.DateTimeFormat()
была добавлена поддержка форматирования долей секунд. Была добавлена поддержка Paint Timing API для получения подробной информации о затраченном времени на создание страницы (полезно для анализа и мониторинга производительности).В инструментах разработчика с помощью инспектора доступности теперь можно узнать, в каком порядке будет переходить фокус при нажатии на клавишу Tab.
Все ресурсы, загружающиеся с локального хоста (127.0.0.1) вне зависимости от url, считаются загруженными в безопасном контексте.
#firefox #release
https://www.mozilla.org/en-US/firefox/84.0/releasenotes/
https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/84
Mozilla
Firefox 84.0, See All New Features, Updates and Fixes