cookie

We use cookies to improve your browsing experience. By clicking «Accept all», you agree to the use of cookies.

avatar

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

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

Show more
The country is not specifiedThe language is not specifiedThe category is not specified
Advertising posts
5 662
Subscribers
No data24 hours
No data7 days
No data30 days

Data loading in progress...

Subscriber growth rate

Data loading in progress...

Про войну в Украине Шлю лучи поддержки братьям и сёстрам украинцам. В моём окружении нет ни одного человека, кто бы поддерживал текущие действия российских властей. Во всех соцсетях я вижу только посты с осуждениями текущей ситуации несмотря на то, что говорят по телевизору. Это заставляет верить, что российский народ не хочет войны, все хотят, чтобы текущая ситуация разрешилась как можно скорее. Мне больно видеть происходящее. Но я хочу и буду верить, что наши власти увидят осуждение своих действий внутри России и остановят весь этот бред.
Show all...
Обработка ошибок с помощью reportError Стэфан Джудис рассказал про малоизвестный метод для облегчения обработки ошибок в библиотечном коде — "New in JavaScript: reportError – a method to report to global event handlers". Для логирования ошибок на странице часто устанавливают глобальный обработчик события error. Библиотеки могут редиректить возникающие исключения в этот глобальный обработчик с помощью setTimeout, но такой код выглядит как хак. Для упрощения решения этой проблемы в платформу был добавлен специальный метод reportError:
try {
  fn();
} catch (error) {
  // добавление кастомной обработки исключений и
  // вызов глобального обработчика
  reportError(error);
}
Поддержка метода reportError есть во всех актуальных браузерах. #js https://www.stefanjudis.com/blog/reporterror-a-method-to-report-to-global-event-handlers/
Show all...
New in JavaScript: reportError – a method to report to global event handlers

Use `reportError` to report errors to global error event handlers.

Выбор библиотеки по её размеру Владимир Клепов рассказал про подводные камни выбора библиотек с использованием размера как основной метрики — "Don't trust JS library size, min+gzip". В статье Владимир пишет о том, что размер библиотеки в Readme, может не отражать реальный процент бандла, который она будет занимать. Обычно код жмётся лучше, чем больше в приложении используется стороннего кода. Также пайплайн сборки может оказывать негативный эффект на размер из-за транспиляции в старую версию JavaScript. Иногда меньший размер библиотеки означает, что нужно использовать больше кода по сравнению с альтернативной библиотекой с большим размером, поэтому размер в этом случае не имеет значения. При выборе библиотеки автор рекомендует оценивать скорость инициализации. Меньшая библиотека с плохой скоростью инициализации будет оказывать негативный эффект на всех пользователей без исключения. В то время как большая библиотека с лучшей скоростью инициализации будет оказывать негативный эффект только один раз при загрузке бандла с сервера. Хорошая статья. Рекомендую почитать. #js #performance #musings https://thoughtspile.github.io/2022/02/15/bundle-size-lies/
Show all...
Don't trust JS library size, min+gzip

Many modern front-end libraries and apps obsess over their bundle size. It’s a noble pursuit — an app that uses smaller libraries has less bloat, loads faster, and the users are happier. We can agree

Time-travel debugging в Svelte Сэм Ван Тассел рассказал про DeLorian — новый инструмент для упрощения отладки Svelte-приложений — "Time Travel Debugging in Svelte with DeLorean". DeLorian — это расширение Chrome DevTools для отслеживания изменений состояния приложения во времени (time-travel debugging). При изменении состояния создаётся снапшот, к которому можно вернуться в любое время. Перемещение по истории работает также как в Redux DevTools. Также DeLorian отображает дерево компонентов и связанные с ними переменные. На данный момент есть ограничения: корень приложения должен находится в DOM-элементе с id="root", приложение должно быть собрано в dev-режиме и работать локально. #svelte #debug #tool https://medium.com/@vantassel.sam/time-travel-debugging-in-svelte-with-delorean-26e04efe9474
Show all...
Time Travel Debugging in Svelte with DeLorean

A new way to debug Svelte apps

HTML-элемент <dialog> в Safari 15.4 beta В рамках инициативы "Interop 2022" в Safari Technology Preview 134 и Safari 15.4 beta была добавлена поддержка HTML-элемента <dialog>. С его помощью можно создавать доступные модальные и немодальные диалоговые окна https://webkit.org/blog/12209/introducing-the-dialog-element/
Show all...
Introducing the Dialog Element

Although the alert, confirm and prompt JavaScript methods are convenient, they aren’t recommended due to their script-blocking behavior.

Statoscope — тулкит для анализа Webpack-бандлов На Smashing Magazine был опубликован транскрипт доклада Сергея Мелюкова про тулкит для анализа Webpack-бандлов — "Statoscope: A Course Of Intensive Therapy For Your Bundle". С помощью Statoscope можно сравнить две сборки между собой и получить информацию об увеличении размера бандла, времени сборки и т.п. Он помогает обнаруживать дубликаты пакетов в бандле и, в отличие от webpack-bundle-analyzer, показывает конкретные файлы, в которых происходит импорт этих пакетов. Его можно использовать в CI для блокирования пулл-реквестов, если какой-либо критический показатель выходит за установленное порог. В нём поддерживается создание кастомных отчётов с помощью Jora и DiscoveryJS. Statoscope используется в проектах Яндекса: в Яндекс.Маркете, Яндекс.Картах, Кинопоиске. Также он используется в библиотеке size-limit. #webpack #bundle #tool https://www.smashingmagazine.com/2022/02/statoscope-course-intensive-therapy-bundle/ https://www.youtube.com/watch?v=aAkmZ0gMYQ8 (доклад на русском)
Show all...
Statoscope: A Course Of Intensive Therapy For Your Bundle — Smashing Magazine

Statoscope is an instrument that analyses your webpack-bundles. Created by Sergey Melukov, it started out as an experimental version in late 2016, which has now become a full-fledged toolkit for viewing, analyzing, and validating webpack-bundles.

Релиз Firefox 97 В новом релизе была добавлена поддержка каскадных слоёв (CSS Cascade Layers) с помощью CSS-директивы @layer. Эта фича полезна при рефакторинге, темизации и структурировании стилей. Добавлена поддержка CSS-свойства scrollbar-gutter. С его помощью можно зарезервировать место на боковой границе вьюпорта, чтобы ширина страницы не прыгала при появлении полосы прокрутки. Добавлен метод AbortSignal.throwIfAborted() и свойство AbortSignal.reason. Эти изменения позволяют упростить реализацию отмены выполнения кода по внешнему событию. Теперь можно использовать requestAnimationFrame и cancelAnimationFrame внутри веб-воркеров. В CSS добавлены новые единицы измерения cap и ic, добавлена поддержка @scroll-timeline и animation-timeline для создания анимаций, привязанных к позиции скролла. CSS-свойство color-adjust было переименовано в print-color-adjust. #firefox #release https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/97
Show all...
Оператор конвейера в JavaScript (pipeline operator) Аксель Раушмайер написал статью об операторе конвейера (pipeline operator, pipe operator) — новом операторе, над которым идёт работа в TC39 — "A pipe operator for JavaScript: introduction and use cases". Есть два конкурирующих пропозала с реализацией оператора конвейера: конвейер в F#-стиле и Hack-стиле. Оба пропозала вводят в язык оператор |>, благодаря которому упрощается композиция функций:
// стандартная композиция
const y = h(g(f(x)));
// композиция с пайпом в Hack-стиле
const y = x |> f(%) |> g(%) |> h(%);
// композиция с пайпом в F#-стиле
const y = x |> f |> g |> h;
Несмотря на то что пропозал c конвейером в F#-стиле выглядит чище, у него больше недостатков по сравнению с конвейером в Hack-стиле: нужно использовать каррирование, усложняется добавление поддержки yield и await, больше накладных расходов на память. По этим причинам работа над F#-версией конвейера была остановлена. На данный момент пропозал о добавлении конвейера в Hack-стиле находится на Stage 2, и его поддержки нет ни в одном браузере. #js #tc39 #proposal https://2ality.com/2022/01/pipe-operator.html
Show all...
Google разрабатывает новый API для определения предпочтений пользователей для показа релевантной рекламы — Topics API. Его разработка началась после того как предыдущее решение — FLoC — получило негативные отзывы от лидеров индустрии из-за высокого риска фингерпринтинга. Формирование предпочтений в Topics API происходит на стороне клиента, есть возможность отключить Topics API и настроить интересующие темы. https://blog.google/products/chrome/get-know-new-topics-api-privacy-sandbox/
Show all...
Deno в 2021 году Арон О'Муллан, Бартек Иванчук и Райан Дал подвели итоги разработки Deno и его экосистемы в 2021 году — "Deno in 2021". Летом был запущен Deno Deploy — коммерческое серверное решение для развёртывания JavaScript, TypeScript и WASM-сервисов. С версии 1.9 HTTP-модуль использует hyper — HTTP-сервер с поддержкой HTTP/2, написанный на Rust. Hyper по сравнению с предыдущей реализацией на TypeScript увеличил пропускную способность сервера и уменьшил задержки. Был добавлен FFI (Foreign Function Interface). Благодаря ему расширения для Deno можно писать на любом языке, поддерживающем соглашения вызова функций C. В четвёртом квартале началась работа над созданием режима совместимости с экосистемой Node.js для запуска npm-пакетов. На данный момент работа над этой фичей ещё не закончена. Её можно включить с помощью флага --compat. Было оптимизировано ядро Deno. Накладные расходы на вызов низкоуровневых функций платформы были сокращены в 100 раз. В августе Deno был добавлен в таблицу совместимости MDN. #deno https://deno.com/blog/deno-in-2021
Show all...
Deno in 2021

Retrospect of what happened in 2021 and what's coming in 2022