bootg.com »
United States »
Defront (при поддержке Зарплата.ру) — про фронтенд-разработку и не только » Telegram Web
Адам Аргайл рассказал про плюсы и минусы разных вариантов центрирования контента в CSS — "Centering in CSS".
В статье рассказывается про пять современных техник центрирования с помощью:
— флексов (лучше всего походит для макро- и микро-разметок);
— гридов (для макро-разметок);
— внутренних отступов (для текста, кнопок, тегов);
— внешних отступов (для иконок и псевдоэлементов);
— абсолютного позиционирования (для модальных окон, нотификаций).
Самый лучший вариант — центрирование с помощью флексов:
#css
https://web.dev/centering-in-css/
В статье рассказывается про пять современных техник центрирования с помощью:
— флексов (лучше всего походит для макро- и микро-разметок);
— гридов (для макро-разметок);
— внутренних отступов (для текста, кнопок, тегов);
— внешних отступов (для иконок и псевдоэлементов);
— абсолютного позиционирования (для модальных окон, нотификаций).
Самый лучший вариант — центрирование с помощью флексов:
.gentle-flex {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 1ch;
}
#css
https://web.dev/centering-in-css/
web.dev
Centering in CSS | Articles | web.dev
Follow 5 centering techniques as they go through a series of tests to see which one is the most resilient to change.
Эдди Османи написал статью про улучшение отзывчивости сайта с помощью паттерна import-on-interaction — "The Import On Interaction Pattern".
Чтобы улучшить производительность web-приложения, можно загружать минимально-необходимое количество кода. Например, сторонние виджеты можно загружать только тогда, когда пользователь прокручивает до них страницу или начинает с ними взаимодействовать. Таким же образом можно загружать куски основного приложения. В статье рассказывается, как это реализовать с помощью React или Vue.
В статье есть мысли про использование import-on-interaction с прогрессивной загрузкой страницы. В этом случае по умолчанию приложение загружается с использованием минимального количества кода (например, без кода фреймворка). Необходимые куски кода приложения загружаются, только после того как пользователь начал что-то кликать. Чтобы не потерять клики в Google используют библиотеку JSAction, которая отслеживает все клики до момента инициализации кода фреймворка.
Полезная статья. Рекомендую почитать всем, кто разрабатывает большие web-приложения.
#js #performance
https://addyosmani.com/blog/import-on-interaction/
Чтобы улучшить производительность web-приложения, можно загружать минимально-необходимое количество кода. Например, сторонние виджеты можно загружать только тогда, когда пользователь прокручивает до них страницу или начинает с ними взаимодействовать. Таким же образом можно загружать куски основного приложения. В статье рассказывается, как это реализовать с помощью React или Vue.
В статье есть мысли про использование import-on-interaction с прогрессивной загрузкой страницы. В этом случае по умолчанию приложение загружается с использованием минимального количества кода (например, без кода фреймворка). Необходимые куски кода приложения загружаются, только после того как пользователь начал что-то кликать. Чтобы не потерять клики в Google используют библиотеку JSAction, которая отслеживает все клики до момента инициализации кода фреймворка.
Полезная статья. Рекомендую почитать всем, кто разрабатывает большие web-приложения.
#js #performance
https://addyosmani.com/blog/import-on-interaction/
Эрвин Хофман рассказал о том, как он работает с критическим CSS в своей системе управления контентом сайта — "Implementing critical CSS, from CMS to CLS".
Критический CSS можно подготавливать и внедрять на страницу разными способами. В своём проекте Эрвин выбрал следующий подход. Он доставляет заинлайненный критический CSS только таким пользователям, которые не были сайте ранее. Это позволяет снизить объём HTML, который нужно передать клиенту. Вместе с инлайном стилей происходит загрузка обычных файлов стилей, которые отвечают за стилизацию всей страницы. При переходе на новую страницу браузер будет доставать стили из кэша браузера, если они были загружены ранее. Все интерактивные элементы временно скрываются, если эти элементы видимы с заинлайненным CSS, но не работают пока полностью не загрузится JavaScript.
Рекомендую заглянуть в статью, если делаете (или хотите сделать) в своём проекте нечто похожее.
#performance #css
https://calendar.perfplanet.com/2020/implementing-critical-css-from-cms-to-cls/
Критический CSS можно подготавливать и внедрять на страницу разными способами. В своём проекте Эрвин выбрал следующий подход. Он доставляет заинлайненный критический CSS только таким пользователям, которые не были сайте ранее. Это позволяет снизить объём HTML, который нужно передать клиенту. Вместе с инлайном стилей происходит загрузка обычных файлов стилей, которые отвечают за стилизацию всей страницы. При переходе на новую страницу браузер будет доставать стили из кэша браузера, если они были загружены ранее. Все интерактивные элементы временно скрываются, если эти элементы видимы с заинлайненным CSS, но не работают пока полностью не загрузится JavaScript.
Рекомендую заглянуть в статью, если делаете (или хотите сделать) в своём проекте нечто похожее.
#performance #css
https://calendar.perfplanet.com/2020/implementing-critical-css-from-cms-to-cls/
Web Performance Calendar
Implementing critical CSS, from CMS to CLS
Those who have run into the motherfuckingwebsite-series already know how to build the fastest website. And even if you don't, it speaks for itself: just use HTML only. Because even CSS is render blocking, and always have been (2012).
But such websites aren't…
But such websites aren't…
Нашел интересную статью Санди Мец про проблему неправильных абстракций — "The Wrong Abstraction".
В психологии есть понятие "ловушка невозвратных затрат" (sunk cost fallacy). Это особенность психики, которая заставляет инвестировать время, деньги и другие ресурсы в убыточное дело. То есть чем больше мы вкладываем усилия в что-то, тем больше оно для нас становится ценнее.
Такая же ловушка возникает и при работе с кодом. Если с течением времени некая абстракции при возникновении новых требований становится хуже, это хороший повод остановиться и подумать, что идёт не так, и это не повод продолжать усложнять код только потому, что в него было вложено много усилий. В этом случае полезно отстранится от такой абстракции и, возможно, заменить её обычным дублированием кода. В итоге это поспособствует здоровью кодовой базы в будущем.
Хорошая статья. Рекомендую почитать всем.
#programming #musings
https://sandimetz.com/blog/2016/1/20/the-wrong-abstraction
В психологии есть понятие "ловушка невозвратных затрат" (sunk cost fallacy). Это особенность психики, которая заставляет инвестировать время, деньги и другие ресурсы в убыточное дело. То есть чем больше мы вкладываем усилия в что-то, тем больше оно для нас становится ценнее.
Такая же ловушка возникает и при работе с кодом. Если с течением времени некая абстракции при возникновении новых требований становится хуже, это хороший повод остановиться и подумать, что идёт не так, и это не повод продолжать усложнять код только потому, что в него было вложено много усилий. В этом случае полезно отстранится от такой абстракции и, возможно, заменить её обычным дублированием кода. В итоге это поспособствует здоровью кодовой базы в будущем.
Хорошая статья. Рекомендую почитать всем.
#programming #musings
https://sandimetz.com/blog/2016/1/20/the-wrong-abstraction
Sandi Metz
The Wrong Abstraction — Sandi Metz
I've been thinking about the consequences of the "wrong abstraction." My RailsConf 2014 "all the little things" talk included a section where I asserted: > duplication is far cheaper than the wrong abstraction And in the summary, I went on to advise: >
Сегодня разработчики React представили новую фичу библиотеки — серверные компоненты.
Серверный компонент — это неинтерактивный React-компонент с расширением
Серверные компоненты — это экспериментальная фича, которая находится в стадии активной разработки, но её уже можно пощупать и поделиться своим фидбэком в RFC.
#jsframeworks #react #experimental
https://reactjs.org/blog/2020/12/21/data-fetching-with-react-server-components.html
Серверный компонент — это неинтерактивный React-компонент с расширением
.server.js
. Он полностью работает на стороне сервера, что позволяет внутри кода компонента сделать запрос к базе данных или прочитать файл с файловой системы сервера. Благодаря комбинированию клиентских (обычных) и серверных компонентов можно улучшить производительности приложения и улучшить UX. Ещё одна важная особенность серверных компонентов — их код не попадает в клиентский бандл приложения. Они не предназначены для замены обычных компонентов — решение об их использовании остаётся на усмотрение разработчиков приложений.Серверные компоненты — это экспериментальная фича, которая находится в стадии активной разработки, но её уже можно пощупать и поделиться своим фидбэком в RFC.
#jsframeworks #react #experimental
https://reactjs.org/blog/2020/12/21/data-fetching-with-react-server-components.html
legacy.reactjs.org
Introducing Zero-Bundle-Size React Server Components – React Blog
This blog site has been archived. Go to react.dev/blog to see the recent posts. 2020 has been a long year. As it comes to an end we wanted to share a special Holiday Update on our research into zero-bundle-size React Server Components. To introduce React…
Прошло две недели с момента последней публикации про Defront Plus. За это время в канале для патронов были опубликованы такие посты:
— Использование статистических методов для анализа производительности
— Строгая проверка на null в кодовой базе Figma
— Исправление сдвига контента из-за появляющегося баннера
— Советы про разработку от инженера из GitHub
— Альтернативный подход для упрощения работы с асинхронным кодом
— Оптимизация доставки изображений с помощью Cloudflare Workers
— Интересные факты из web-альманаха за 2020 год
— Производительность веба в 2021 году
— Обзор видеоформатов HEVC и AV1
— Сравнение производительности Puppeteer, Selenium и Playwright
Становитесь патроном канала на Patreon, чтобы получить доступ к дополнительным постам в Defront Plus. На данный момент Patreon мой единственный источник дохода; все донаты идут на покупку еды, оплату аренды квартиры и т.п.
Спасибо всем, кто читает и поддерживает Defront!
https://www.patreon.com/myshov
— Использование статистических методов для анализа производительности
— Строгая проверка на null в кодовой базе Figma
— Исправление сдвига контента из-за появляющегося баннера
— Советы про разработку от инженера из GitHub
— Альтернативный подход для упрощения работы с асинхронным кодом
— Оптимизация доставки изображений с помощью Cloudflare Workers
— Интересные факты из web-альманаха за 2020 год
— Производительность веба в 2021 году
— Обзор видеоформатов HEVC и AV1
— Сравнение производительности Puppeteer, Selenium и Playwright
Становитесь патроном канала на Patreon, чтобы получить доступ к дополнительным постам в Defront Plus. На данный момент Patreon мой единственный источник дохода; все донаты идут на покупку еды, оплату аренды квартиры и т.п.
Спасибо всем, кто читает и поддерживает Defront!
https://www.patreon.com/myshov
Антуан Квин в блоге WebKit рассказал о преимуществах использования индивидуальных CSS-свойств для трансформации объектов — "CSS Individual Transform Properties".
Все современные браузеры поддерживают трансформацию объектов с помощью CSS-свойства
Индивидуальные свойства для трансформации — это новая фича. На данный момент её поддержка есть в Firefox, Chrome Canary и Safari Technology Preview 117.
#css #specification
https://webkit.org/blog/11420/css-individual-transform-properties/
Все современные браузеры поддерживают трансформацию объектов с помощью CSS-свойства
transform
и CCS-функций translate()
, rotate()
, scale()
, skew()
, matrix()
. Первые три используются в разработке чаще всего. Для упрощения работы с ними в спецификацию CSS Transform Level 2 были добавлены CSS-свойства translate
, rotate
, scale
. Ими удобнее пользоваться по сравнению с transform
, а также они облегчают создание и переопределение сложных анимаций.Индивидуальные свойства для трансформации — это новая фича. На данный момент её поддержка есть в Firefox, Chrome Canary и Safari Technology Preview 117.
#css #specification
https://webkit.org/blog/11420/css-individual-transform-properties/
WebKit
CSS Individual Transform Properties
CSS Transforms appeared on the Web along with CSS Animations and CSS Transitions to add visual effects and motion on the Web.
Давид Хейнемейер Ханссон — автор веб-фреймворка Ruby on Rails — вчера представил Hotwire — альтернативный подход для создания SPA-подобных приложений, который использовался для создания почтового клиента hey.com.
Hotwire предоставляет набор из трёх библиотек: Turbo, Stimulus и Strada — для создания современных web-приложений без упора на JavaScript. Stimulus — это JavaScript-фреймворк, который был предоставлен пару лет назад. Его особенность заключается в HTML-центричном подходе для описания состояния и поведения приложения в браузере. Strada — это библиотека, облегчающие создание гибридных мобильных приложений. На данный момент она находится в стадии активной разработки, и более подробной информаци о ней нет. Turbo — это новая библиотека, помогающая в создании интерактивных страниц. Turbo интегрирует между собой бэкенд, который для обновляемых частей приложения вместо JSON отправляет отрендеренный HTML, и клиент, который подписывается на обновления с бэкенда по web-сокету и подменяет части приложения прилетевшими кусочками HTML-кода.
Видел в твиттере и на hackernews разные мысли по поводу этого подхода. Кто-то пишет о том, что ребята переизобрели Laravel Lifewire. Кто-то хвалит за продвижение идеи минимального использования JavaScript. Кто-то ругает за то, что отказ от JSON смешивает между собой слои представления и приложения. Подход, как минимум, интересный, но будет ли он развиваться за пределами Ruby-экосистемы, пока остаётся вопросом.
#jsframeworks #announcement
https://hotwire.dev/
https://twitter.com/dhh/status/1341420143239450624
Hotwire предоставляет набор из трёх библиотек: Turbo, Stimulus и Strada — для создания современных web-приложений без упора на JavaScript. Stimulus — это JavaScript-фреймворк, который был предоставлен пару лет назад. Его особенность заключается в HTML-центричном подходе для описания состояния и поведения приложения в браузере. Strada — это библиотека, облегчающие создание гибридных мобильных приложений. На данный момент она находится в стадии активной разработки, и более подробной информаци о ней нет. Turbo — это новая библиотека, помогающая в создании интерактивных страниц. Turbo интегрирует между собой бэкенд, который для обновляемых частей приложения вместо JSON отправляет отрендеренный HTML, и клиент, который подписывается на обновления с бэкенда по web-сокету и подменяет части приложения прилетевшими кусочками HTML-кода.
Видел в твиттере и на hackernews разные мысли по поводу этого подхода. Кто-то пишет о том, что ребята переизобрели Laravel Lifewire. Кто-то хвалит за продвижение идеи минимального использования JavaScript. Кто-то ругает за то, что отказ от JSON смешивает между собой слои представления и приложения. Подход, как минимум, интересный, но будет ли он развиваться за пределами Ruby-экосистемы, пока остаётся вопросом.
#jsframeworks #announcement
https://hotwire.dev/
https://twitter.com/dhh/status/1341420143239450624
Андрей Ситник в блоге Злых Марсиан написал статью о современных практиках создания фавиконок сайта — "How to Favicon in 2021: Six files that fit most needs".
На эту тему было написано уже много статей, но Андрей рассказывает только про необходимый минимум, который будет хорошо выглядеть в современных браузерах и на домашних экранах смартфонов. Для этого достаточно подключить шесть файлов:
Формат ico нужен для поддержки RSS-ридеров. Формат SVG будет использоваться в браузерах (в статье есть пример, как в SVG сделать изменение цвета иконки в зависимости от текущей темы ОС). Иконка с rel="apple-touch-icon" нужна для того, чтобы ваш сайт красиво выглядел на домашнем экране iPhone. Файл манифеста нужен для добавления иконок, которые будут использоваться в Android.
Очень полезная статья. Рекомендую почитать.
#web
https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs
На эту тему было написано уже много статей, но Андрей рассказывает только про необходимый минимум, который будет хорошо выглядеть в современных браузерах и на домашних экранах смартфонов. Для этого достаточно подключить шесть файлов:
// HTML
<link rel="icon" href="/favicon.ico" /><!-- 32×32 -->
<link rel="icon" href="/icon.svg" type="image/svg+xml" sizes="any" />
<link rel="apple-touch-icon" href="/apple.png" /><!-- 180×180 -->
<link rel="manifest" href="/manifest.webmanifest" />
// manifest.webmanifest
{
"icons": [
{ "src": "/192.png", "type": "image/png", "sizes": "192x192" },
{ "src": "/512.png", "type": "image/png", "sizes": "512x512" }
]
}
Формат ico нужен для поддержки RSS-ридеров. Формат SVG будет использоваться в браузерах (в статье есть пример, как в SVG сделать изменение цвета иконки в зависимости от текущей темы ОС). Иконка с rel="apple-touch-icon" нужна для того, чтобы ваш сайт красиво выглядел на домашнем экране iPhone. Файл манифеста нужен для добавления иконок, которые будут использоваться в Android.
Очень полезная статья. Рекомендую почитать.
#web
https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs
evilmartians.com
How to Favicon in 2025: Three files that fit most needs—Martian Chronicles, Evil Martians’ team blog
Prefer SVG over PNG, trust browsers to downscale, drop obscure formats—the ultimate, exhaustive guide to favicons for modern web. Includes steps for static HTML and Webpack.
Владимир Агафонкин — автор библиотеки leaflet — написал туториал про создание мини-версии библиотеки для отображения географических карт — "A Web Map from Scratch".
Все растровые web-карты работают по похожему принципу. Сначала карта разбивается на тайлы (изображения размера 256x256 пикселей). На нулевом уровне масштаба будет один тайл, на первом — четыре, на втором — 16, а на пятнадцатом — 32768. Потом для заданного уровня масштаба, широты и долготы географической точки выбирается необходимый тайл. Для этого используются формулы вариации проекции Меркатора — Web Mercator projection. Для полученного тайла выбираются несколько соседних тайлов, и затем все они размещаются на странице с помощью абсолютного позиционирования.
Рекомендую посмотреть туториал, если интересно узнать принцип работы растровых версий Google-карт, Яндекс-карт и 2GIS.
#map #tutorial
https://observablehq.com/@mourner/simple-web-map
Все растровые web-карты работают по похожему принципу. Сначала карта разбивается на тайлы (изображения размера 256x256 пикселей). На нулевом уровне масштаба будет один тайл, на первом — четыре, на втором — 16, а на пятнадцатом — 32768. Потом для заданного уровня масштаба, широты и долготы географической точки выбирается необходимый тайл. Для этого используются формулы вариации проекции Меркатора — Web Mercator projection. Для полученного тайла выбираются несколько соседних тайлов, и затем все они размещаются на странице с помощью абсолютного позиционирования.
Рекомендую посмотреть туториал, если интересно узнать принцип работы растровых версий Google-карт, Яндекс-карт и 2GIS.
#map #tutorial
https://observablehq.com/@mourner/simple-web-map
Observable
A Web Map from Scratch
This static map was made from OpenStreetMap tiles with 8 lines of code: You can use this in your own notebooks by importing the function: How does this code work? Let's find out, step by step. Most web maps, including OpenStreetMap, use the Web Mercator system…
Дженс Оливер Маейерт написал небольшой пост о том, почему нужно забыть о AMP (Accelerated Mobile Pages) — "Ignore AMP".
В 2015 году Google предложил использовать AMP — технологию для ускорения доставки страниц. Намерение было благое, но сообщество выступило против этой инициативы с резкой критикой, в первую очередь из-за того, что AMP должен был распространяться с домена Google. По прошествии пяти лет AMP не получил большого распространения, более того Google начал продвигать другую инициативу с похожей целью — Web Vitals.
Дженс пишет о том, что не нужно добавлять в свои проекты поддержку AMP из-за нескольких причин: это нестандартизированная технология, она требует дополнительные ресурсы на поддержку, увеличивая затраты на разработку в несколько раз, она медленно умирает.
Советую заглянуть в статью, если задумывались о внедрении AMP в свой проект.
#google #web
https://meiert.com/en/blog/ignore-amp/
В 2015 году Google предложил использовать AMP — технологию для ускорения доставки страниц. Намерение было благое, но сообщество выступило против этой инициативы с резкой критикой, в первую очередь из-за того, что AMP должен был распространяться с домена Google. По прошествии пяти лет AMP не получил большого распространения, более того Google начал продвигать другую инициативу с похожей целью — Web Vitals.
Дженс пишет о том, что не нужно добавлять в свои проекты поддержку AMP из-за нескольких причин: это нестандартизированная технология, она требует дополнительные ресурсы на поддержку, увеличивая затраты на разработку в несколько раз, она медленно умирает.
Советую заглянуть в статью, если задумывались о внедрении AMP в свой проект.
#google #web
https://meiert.com/en/blog/ignore-amp/
Meiert
Ignore AMP · Jens Oliver Meiert
In 2018, my recommendation was to avoid AMP, to use AMP for the most relevant pages, or to use AMP only. In 2020 my recommendation is to ignore it, because AMP largely appears meaningless now. <cite>Upgrade Your HTML II</cite> gives an opinionated idea why.
Энтони Рикод на perfplanet написал обзор HTML- и CSS-фич, которые могут помочь в уменьшении размера JS-бандла — "HTML and CSS techniques to reduce your JavaScript".
В статье рассказывается про то, как без использования JavaScript отобразить нужное количество строк в контейнере. Рассказывается про использование
Полезный обзор. Почитайте, если ещё не встречались с этим фичами.
#performance #html #css
https://calendar.perfplanet.com/2020/html-and-css-techniques-to-reduce-your-javascript/
В статье рассказывается про то, как без использования JavaScript отобразить нужное количество строк в контейнере. Рассказывается про использование
position: sticky
для создания эффекта прилипающих к границам экрана элементов, про плавную прокрутку, про использование CSS Scroll Snap для создания слайдеров и про ленивую загрузку изображений.Полезный обзор. Почитайте, если ещё не встречались с этим фичами.
#performance #html #css
https://calendar.perfplanet.com/2020/html-and-css-techniques-to-reduce-your-javascript/
Web Performance Calendar
HTML and CSS techniques to reduce your JavaScript
More and more websites are relying on JavaScript for the interactions they provide. It enables pleasant experiences but also comes with undesirable effects:
Longer page load times
Page is unusable until the JavaScript loads and if it does so without…
Longer page load times
Page is unusable until the JavaScript loads and if it does so without…
Райан Карниато — автор библиотеки Solid.js — сравнил производительность популярных ui-фреймворков/библиотек и опубликовал результаты в статье "JavaScript Frameworks, Performance Comparison 2020".
Райан поделил все фреймворки на четыре группы. В группе с небольшим упором на производительность первые места взяли Alpine, Marko и React. В группе с большим упором на производительность на первых местах Riot, Preact и LitElement. В группе с очень большим упором на производительность лучшие результаты показали HyperApp, Svelte, Elm. В группе с максимальным упором на производительности с незначительным разрывом победил Solid.js, следом за ним идёт Inferno.
Выводы из статьи. Маркетинг не всегда отражает реальность, так как в разных проектах разные особенности. При выборе ui-фреймворка нужно делать свои бенчмарки; в одном случае будет лучше работать решение с Virtual DOM, в другом случае — DSL, компилируемый в JavaScript.
#jsframeworks #performance
https://medium.com/javascript-in-plain-english/javascript-frameworks-performance-comparison-2020-cd881ac21fce
Райан поделил все фреймворки на четыре группы. В группе с небольшим упором на производительность первые места взяли Alpine, Marko и React. В группе с большим упором на производительность на первых местах Riot, Preact и LitElement. В группе с очень большим упором на производительность лучшие результаты показали HyperApp, Svelte, Elm. В группе с максимальным упором на производительности с незначительным разрывом победил Solid.js, следом за ним идёт Inferno.
Выводы из статьи. Маркетинг не всегда отражает реальность, так как в разных проектах разные особенности. При выборе ui-фреймворка нужно делать свои бенчмарки; в одном случае будет лучше работать решение с Virtual DOM, в другом случае — DSL, компилируемый в JavaScript.
#jsframeworks #performance
https://medium.com/javascript-in-plain-english/javascript-frameworks-performance-comparison-2020-cd881ac21fce
Medium
JavaScript Frameworks, Performance Comparison 2020
The ultimate performance battle between JavaScript frameworks
Йехуда Катц — один из отцов Ember, cargo и участник W3C — написал в твиттере большой тред, о распространённом заблуждении, что фронтенд — это специализация для джуниоров.
Код фронтенда в отличие от бэкенда работает во враждебном окружении: он должен работать во всех современных браузерах (их много), операционных системах и на разных устройствах (десктоп, мобильные). Нужно учитывать восстановление системы из невалидных состояний, например, когда крышка ноутбука закрывается во время отправки запроса на сервер или когда пользователь подключён к нестабильной сети. Опытные фронтенд-разработчики при решении своих задач должны учитывать эти и многие другие факторы. Более того, опытные разработчики должны создавать такие абстракции, которыми смогут эффективно пользоваться новички.
Разнообразие тулинга во фронтенде объясняется не уровнем подготовки специалистов, а, снова, враждебной средой, в которой должен работать код. Код нужно транспилировать, чтобы поддержать разные браузеры; можно, конечно, использовать старые версии языка, но это больно. Большие проекты используют PostCSS для использования новых фич CSS, добавления вендорных префиксов и для автоматического обхода ошибок в браузерах. Чтобы код был доставлен пользователю как можно быстрее, он должен быть собран сборщиком и минифицирован. Код нужно оптимизировать, потому что основная масса пользователей используют мобильные устройства на слабых процессорах.
В общем, хороший тред. Очень рекомендую почитать.
#musings #web
https://twitter.com/wycats/status/1342484366279098369
Код фронтенда в отличие от бэкенда работает во враждебном окружении: он должен работать во всех современных браузерах (их много), операционных системах и на разных устройствах (десктоп, мобильные). Нужно учитывать восстановление системы из невалидных состояний, например, когда крышка ноутбука закрывается во время отправки запроса на сервер или когда пользователь подключён к нестабильной сети. Опытные фронтенд-разработчики при решении своих задач должны учитывать эти и многие другие факторы. Более того, опытные разработчики должны создавать такие абстракции, которыми смогут эффективно пользоваться новички.
Разнообразие тулинга во фронтенде объясняется не уровнем подготовки специалистов, а, снова, враждебной средой, в которой должен работать код. Код нужно транспилировать, чтобы поддержать разные браузеры; можно, конечно, использовать старые версии языка, но это больно. Большие проекты используют PostCSS для использования новых фич CSS, добавления вендорных префиксов и для автоматического обхода ошибок в браузерах. Чтобы код был доставлен пользователю как можно быстрее, он должен быть собран сборщиком и минифицирован. Код нужно оптимизировать, потому что основная масса пользователей используют мобильные устройства на слабых процессорах.
В общем, хороший тред. Очень рекомендую почитать.
#musings #web
https://twitter.com/wycats/status/1342484366279098369
Twitter
Yehuda Katz
The thing I find frustrating about the idea that frontend dev is "for juniors" is that nobody would say it about other specializations. Someone might say that it's *better* if a compiler author worked in a more full stack role. They *wouldn't* say "compiler…
Мальте Юбэл из Google написал статью про современные практики работы с изображениями в web — "Maximally optimizing image loading for the web in 2021".
В статье рассказывается про то, как избежать сдвига контента при работе с отзывчивыми изображениями, про ленивую загрузку изображений, кэширование, новый формат AVIF, использование тега
Самым интересным в статье для меня было описание техник для снижения потребления и оптимизации CPU. Например, вставка изображений с атрибутом
Небольшая и очень полезная статья. Рекомендую почитать.
#graphics #web
https://www.industrialempathy.com/posts/image-optimizations/
В статье рассказывается про то, как избежать сдвига контента при работе с отзывчивыми изображениями, про ленивую загрузку изображений, кэширование, новый формат AVIF, использование тега
<picture>
и работу с размытыми заглушками.Самым интересным в статье для меня было описание техник для снижения потребления и оптимизации CPU. Например, вставка изображений с атрибутом
decoding="async"
даёт сигнал браузерам о том, что декодировать изображение можно вне главного потока (в твиттере в обсуждении статьи, лид, отвечающий за рендеринг в Chrome, говорит о том, что этот атрибут не включён по умолчанию, так как загружаемый контент моргал бы при загрузке). Ещё в статье есть описание трюка с использованием размытия с помощью SVG-фильтров, благодаря этому подходу изображения размываются только один раз при загрузке, а не на каждый layout страницы как при использовании CSS-фильтров.Небольшая и очень полезная статья. Рекомендую почитать.
#graphics #web
https://www.industrialempathy.com/posts/image-optimizations/
Industrialempathy
Maximally optimizing image loading for the web
In this post I'll outline 8 image loading optimization techniques to minimize both the bandwidth used for loading images on the web and the...
Дорогие подписчики, с Новым Годом! Желаю всего самого наилучшего, будьте сильными, верьте в себя и пусть вам всегда улыбается удача!
Рйо Ота рассказал, как можно сделать SSH-клиент, VNC-клиент и мессенджер без использования веб сокетов и WebRTC — "The Power of Pure HTTP – screen share, real-time messaging, SSH and VNC".
Обычно HTTP используется для передачи относительно небольших объёмов данных. Разработчики браузеров сейчас работают над возможностью отправки по сети
На данный момент возможность передачи
#experimental #http #api
https://dev.to/nwtgck/the-power-of-pure-http-screen-share-real-time-messaging-ssh-and-vnc-5ghc
Обычно HTTP используется для передачи относительно небольших объёмов данных. Разработчики браузеров сейчас работают над возможностью отправки по сети
ReadableStream
с помощью fetch
, то есть создания канала для передачи бесконечного потока данных. В статье разбираются примеры, как использовать эту фичу вместе с piping server, который позволяет организовать взаимодействие между двумя браузерами с помощью обычных GET- и POST-запросов. С помощью такого подхода можно сделать приложение просмотра удалённого рабочего стола, SSH-клиенты и другие подобные приложения, которые работают внутри браузера и используют обычный HTTP-канал в качестве транспорта.На данный момент возможность передачи
ReadableStream
с помощью fetch
есть только в Chrome в экспериментальном режиме.#experimental #http #api
https://dev.to/nwtgck/the-power-of-pure-http-screen-share-real-time-messaging-ssh-and-vnc-5ghc
DEV Community
The Power of Pure HTTP – screen share, real-time messaging, SSH and VNC
HTTP stream allow you to real-time communications such as screen share, messaging, SSH, VNC and so on. This post shows the power of pure HTTP stream using Piping Server.
Саймон Вики рассказал, почему нужно перестать загружать шрифты с CDN Google — "Time to Say Goodbye to Google Fonts".
Если использовать шрифты с CDN Google, браузер сначала должен разрезолвить домен для получения CSS, а затем домен, на котором лежат файлы шрифтов. В сетях с высокими задержками это может занять несколько секунд. Поэтому многие специалисты в области производительности рекомендуют хостить шрифты на своём домене, чтобы достичь максимально возможной скорости загрузки сайта.
Саймон пишет о том, что раньше загрузка шрифтов Google не была большой проблемой, потому что закэшированный файл шрифта мог использоваться другими сайтами. С включением изолированного кэша в Chrome 86 сайты загружают шрифты повторно, сводя на нет одно из основных преимуществ CDN. В Firefox тоже есть планы на добавление изолированного кэша, а в Safari он работает уже с 2013 года.
#fonts #performance
https://wicki.io/posts/2020-11-goodbye-google-fonts/
Если использовать шрифты с CDN Google, браузер сначала должен разрезолвить домен для получения CSS, а затем домен, на котором лежат файлы шрифтов. В сетях с высокими задержками это может занять несколько секунд. Поэтому многие специалисты в области производительности рекомендуют хостить шрифты на своём домене, чтобы достичь максимально возможной скорости загрузки сайта.
Саймон пишет о том, что раньше загрузка шрифтов Google не была большой проблемой, потому что закэшированный файл шрифта мог использоваться другими сайтами. С включением изолированного кэша в Chrome 86 сайты загружают шрифты повторно, сводя на нет одно из основных преимуществ CDN. В Firefox тоже есть планы на добавление изолированного кэша, а в Safari он работает уже с 2013 года.
#fonts #performance
https://wicki.io/posts/2020-11-goodbye-google-fonts/
Wicki.io
Time to Say Goodbye to Google Fonts: Cache Performance
This browser caching change kills the utility of cross-site resource CDNs like Google Fonts.
Дэвид Нолэн — ведущий разработчик ClojureScript — рассказал про свой путь в разработке, про ClojureScript и о том, как он стал его основным майнтейнером.
Дэвид говорит, что самое ценное, что он перенял от Ричарда Хикки (автор Clojure), умение говорить "нет". При работе над проектами, которые используют большое количество людей, нужно уметь говорить "нет", чтобы иметь силы продолжать работать над важными фичами. Но не нужно просто отказывать, нужно мотивировать находить своё решение. Если пользователи приходят с багами, самое лучшее, что можно сделать — помочь им самим исправить проблемный код. Также работа над проектом должна приносить радость, иначе можно быстро выгореть.
Интересная статья. В первую очередь рекомендую почитать всем, кто поддерживает open source проекты.
#opensource #clojurescript #history
https://github.com/readme/david-nolen
Дэвид говорит, что самое ценное, что он перенял от Ричарда Хикки (автор Clojure), умение говорить "нет". При работе над проектами, которые используют большое количество людей, нужно уметь говорить "нет", чтобы иметь силы продолжать работать над важными фичами. Но не нужно просто отказывать, нужно мотивировать находить своё решение. Если пользователи приходят с багами, самое лучшее, что можно сделать — помочь им самим исправить проблемный код. Также работа над проектом должна приносить радость, иначе можно быстро выгореть.
Интересная статья. В первую очередь рекомендую почитать всем, кто поддерживает open source проекты.
#opensource #clojurescript #history
https://github.com/readme/david-nolen
GitHub
David Nolen
David Nolen of ClojureScript emphasizes the importance of creating environments where potential for solutions can thrive.
Read more at The ReadME Project by GitHub.
Read more at The ReadME Project by GitHub.