|
| 1 | +--- |
| 2 | +title: 'В этом выпуске мы поговорим о релизах Chrome и Firefox, узнаем как работать с длинными тасками, найдём утечки Observable, углубимся во View Transition API и посмотрим на другие интересные материалы.' |
| 3 | +soundcloudLink: 'https://soundcloud.com/csssr/chrome-133-firefox-135-dlinnye-taski-v-js-massivy-v-ts-interop-2025' |
| 4 | +date: '2025-03-02T00:00:00.000Z' |
| 5 | +episodeNumber: 270 |
| 6 | +tag: 'news' |
| 7 | +author: 'Ислам Виндижев' |
| 8 | +--- |
| 9 | + |
| 10 | +Всем привет, это «Новости 512» от CSSSR. В этом выпуске мы поговорим о релизах Chrome и Firefox, узнаем как работать с длинными тасками, найдём утечки Observable, углубимся во View Transition API и посмотрим на другие интересные материалы. |
| 11 | + |
| 12 | +<ParagraphWithImage imageName="laptopNews" > |
| 13 | + ### Интересные публикации |
| 14 | + |
| 15 | +Случается так, что задача длинная, дорогая и есть смысл её разделить. Способов сделать это не один, и у каждого есть свои преимущества. Алекс МакАртур (Alex MacArthur) в [своей статье](https://macarthur.me/posts/long-tasks/) поднимает эту тему и рассказывает аж о семи разных подходах к решению этой задачи. Этот список включает в себя работу с планировщиком, Web Workers, setTimeout() с рекурсией и другие. По каждому из них, естественно, есть пример и лаконичный разбор. В конце статьи вы найдёте резюме, в котором Алекс как раз говорит о том, какие есть трейдофы и какой подход лучше выбрать в той или иной ситуации. Также доступен и [перевод на Хабре](https://habr.com/ru/companies/timeweb/articles/882418/). |
| 16 | +</ParagraphWithImage> |
| 17 | + |
| 18 | +Вы когда-нибудь задавались вопросом [сколько длится секунда в JS](https://docs.timetime.in/blog/how-long-is-a-second-in-js/)? Мне бы и в голову никогда не пришло. Однако, Иаго Ластра (Iago Lastra) рассказал о том, как считается время в JS на самом деле и почему это может быть важно. Он делает короткий экскурс в подсчёт времени в принципе, а потом переходит конкретно к JS. В JS время в формате POSIX, который не предусматривает коррективы секундной издержки. В большинстве приложений этого абсолютно достаточно, а вот в научных, финансовых или высокопроизводительных приложениях этот нюанс придётся учитывать. Подробнее о времени и при чём тут атомы цезия читайте по ссылке в описании. |
| 19 | + |
| 20 | +Существует такой фреймворк для разработки десктопных приложений при помощи веб-технологий, как Electron. Не знаю насколько он популярен на самом деле, но, например, десктопное приложение Slack, да и многие другие написаны именно на нём. Felix Rieseberg — один из мейнтейнеров проекта — решил развеять [некоторые мифы](https://felixrieseberg.com/things-people-get-wrong-about-electron/) о нём. Например, он рассказывает о том, что традиционно десктопные языки с ним тоже интегрируются, веб-технологии уже давно применяются вне веба, а размер приложений и производительность уже не являются проблемами Electron в наше время. Если у вас предвзятое отношение к Electron — стоит почитать. |
| 21 | + |
| 22 | +Говорят «сколько воды утекло», а у нас «сколько памяти утекло». Сколько же её может утечь, как это обнаружить и что делать, в [своей статье на Хабре](https://habr.com/ru/articles/879502/) рассказала Алан Ходов. Речь идёт о случае, когда в Angular не отписываешься от Observable. Для того, чтобы продемонстрировать это Алан реализует простое приложение, в котором отписаться «забывает». После этого он ищет утечку при помощи DevTools, устраняет её и сравнивает картины в DevTools до и после. Получился довольно лаконичный гайд по поиску подобных утечек. |
| 23 | + |
| 24 | +В TypeScript существует две разные нотации для массивов T[] и Array<T>. В целом они вроде бы эквивалентные, но Аксель Раушмаер предпочитает вторую нотацию. В своей [короткой заметке](https://2ality.com/2025/02/array-type-notation.html) он рассказал о том, почему нотаций две и почему вторая ему нравится больше. Причина в том, что код лучше читается, когда у массивов могут быть элементы разного типа. В заметке вы также найдёте несколько нюансов работы разных нотаций. |
| 25 | + |
| 26 | +Давненько у нас не было материалов с CSS Tricks. Насколько я понимаю, у ресурса какое-то время не было спонсора, теперь появился новый и публикация статей возобновилась. Сегодня их будет аж четыре. |
| 27 | + |
| 28 | +Хуан Диего Родригез (Juan Diego Rodríguez) [окунулся](https://css-tricks.com/what-on-earth-is-the-types-descriptor-in-view-transitions/) в глубины документации View Transition API и задался вопросом, что такое дескриптор `types` и зачем он нужен. Он позволяет определить разные анимации для перехода между разными документами. Это полезно, но лично мне было несколько сложно понять, как корректно их задать для разных документов и показалось реально замудренным. Может быть вы разберётесь лучше. |
| 29 | + |
| 30 | +@counter-style — это правило в CSS, которое позволяет создавать пользовательские стили для маркеров списков. Стандартные возможности ограничены, а это правило позволяет использовать иконки, создавать системы нумерации, в общем, есть с чем поиграться. Об этом и [пишет](https://css-tricks.com/some-things-you-might-not-know-about-custom-counter-styles/) Джефф Грэм (Geoff Graham) на CSS Tricks. Он приводит интересные примеры и разбирается в возможностях правила. |
| 31 | + |
| 32 | +Ещё два материала скорее более практические гайды. [Первый](https://css-tricks.com/positioning-text-around-elements-with-css-offset/) посвящён позиционированию текста вокруг элементов при помощи CSS-свойства offset, а [второй](https://css-tricks.com/fancy-menu-navigation-using-anchor-positioning/) — созданию меню с применением якорного позиционирования для создания эффектов. |
| 33 | + |
| 34 | +Мягкое введение в WASM делает команда Deno после релиза версии 2.1, в котором появилась поддержка WASM первого класса. [Рассматривается](https://deno.com/blog/intro-to-wasm) базовый пример создания и компиляции WASM-модуля, его подключение и вызов функции из него. Пример действительно супер-простой, но если вы работаете с Deno и пока не пробовали WASM совсем, то он может вдохновить вас на дальнейшие шаги. |
| 35 | + |
| 36 | +Ещё одна короткая заметка на этот раз от Робина Уриха. Он рассказывает о том, [как ваш Vite-проект на чистом JS подружить с TypeScript](https://www.robinwieruch.de/vite-typescript/). В ней он рассказывает, как создать правильные файлы конфигурации, подружить их между собой и где ещё могут понадобиться коррективы. Коротенькая инструкция под конкретный случай. |
| 37 | + |
| 38 | +Дальше — полезные ссылки и материалы, но уже покороче. |
| 39 | + |
| 40 | +Я довольно много за всё время существования новостей рассказывал про статьи Адама Аргайла (Adam Argyle) про реализацию каких-то фич. Они все собраны в [Nerdy Notebook](https://nerdy.dev/notebook/index.html) — ресурсе, на котором он собрал те самые фичи. Это большой сборник, где можно найти много рецептов. |
| 41 | + |
| 42 | +В следующей заметке собран [обзор аж 11-ти тектовых редакторов](https://liveblocks.io/blog/which-rich-text-editor-framework-should-you-choose-in-2025) для ваших проектов. Какие-то названия вы уже могли встречать или работать с этими редакторами, а какие-то нет. Стоит заглянуть, если у вас есть такие потребности. |
| 43 | + |
| 44 | +Все пользуются либо Jest, либо Vitest, либо тест-раннером Node.js. Но есть такой [тест-раннер как Poku](https://github.com/wellwelwel/poku/releases/tag/v3.0.0). Он кросплатформенный, легковесный, производительный и современный. Если интересуетесь тест-раннерами — поглядите. |
| 45 | + |
| 46 | +Ещё один небольшой инструментик — [Ruck](https://ruck.tech/). Это опенсорсный фреймворк для создания React-приложений с Deno. Исходя из readme, он позволяет создавать как простенькие, так и сложные приложения. |
| 47 | + |
| 48 | +[Восьмая часть](https://habr.com/ru/companies/timeweb/articles/872326/) перевода репозитория об алгоритмах и структурах данных на JavaScript вышла на Хабре. Она посвящена алгоритмам сортировки. Не торопитесь отмахиваться: если у вас нет теоретической подготовки по алгоритмам, очень стоит ознакомиться, чтобы понимать, какой алгоритм в какой ситуации стоит выбрать и как они реализуются. |
| 49 | + |
| 50 | +Обращу ваше внимание на JS-библиотеку для сканирования документов [jscanify](https://github.com/puffinsoft/jscanify). Если у вашего проекта есть фичи, связанные со сканированием документов, чеков, других бумажных носителей — посмотрите, может пригодится. |
| 51 | + |
| 52 | +Завершит рубрику [документальный фильм о фреймворке Angular](https://www.youtube.com/watch?v=cRC9DlH45lA). Кстати, создатели этого фильма делали документалки и про другие фреймворки. |
| 53 | + |
| 54 | +<ParagraphWithImage imageName="manWithLaptop"> |
| 55 | + ### Новости релизов |
| 56 | + |
| 57 | +Доступен Chrome 133. В этом релизе была добавлена продвинутая версия функции attr(), которая позволяет использовать в качестве типа не только строки. Теперь при помощи container queries можно стилизовать дочерние элементы в зависимости от состояния скролла. В DevTools AI-ассистенту Gemini добавили историю чата, которая не очищается между сессиями. Больше подробностей в официальных обзорах [Chrome](https://developer.chrome.com/blog/new-in-chrome-133) и [DevTools](https://developer.chrome.com/blog/new-in-devtools-133) от Google. |
| 58 | +</ParagraphWithImage> |
| 59 | + |
| 60 | +[Firefox 135](https://www.mozilla.org/en-US/firefox/135.0/releasenotes/) получил экспериментальную поддержку Temporal API, а такие фичи как доступ к чат-ботам прямо в браузере и автозаполнение банковских карт теперь доступны глобально. Помимо этого был расширен перечень языков в Firefox Translate. Больше подробностей в блоге Firefox. |
| 61 | + |
| 62 | +[Deno 2.2](https://deno.com/blog/v2.2) порадовал нас улучшениями в основном в области качества жизни разработчиков. Этот релиз включает в себя интеграцию с OpenTelemetry, новые правила для линтера, обновление версии TS и движка, а также поддержку node:sqlite. Помимо этого поработали над производительностью и WebGPU. |
| 63 | + |
| 64 | +В новой версии [Astro 5.3](https://astro.build/blog/astro-530/) ускорили рендеринг страниц, добавили автоматическую инициализацию хранилица сессии, а также более гибкий бандлинг файлов для Netlify. Больше подробностей в блоге Astro. |
| 65 | + |
| 66 | +Также в этом выпуске отмечу релизы релиз-кандидата [TypeScript 5.8](https://devblogs.microsoft.com/typescript/announcing-typescript-5-8-rc/), [Prettier 3.5](https://prettier.io/blog/2025/02/09/3.5.0), [pnpm 10.3.0](https://github.com/pnpm/pnpm/releases/tag/v10.3.0) и [MySQL 9.2.0](https://dev.mysql.com/doc/relnotes/mysql/9.2/en/news-9-2-0.html). |
| 67 | + |
| 68 | +<ParagraphWithImage imageName="laptopNews" > |
| 69 | + ### Другие новости |
| 70 | + |
| 71 | +Помните про инициативу Interop? Это сотрудничество разработчиков браузеров для согласованной разработки браузерных фич, чтобы они быстрее получали стабильную кросс-браузерную поддержку. Были объявлены [фичи на 2025 год](https://webkit.org/blog/16458/announcing-interop-2025/). В этом году в фокусе: Storage Access API, pointer/mouse events, событие scrollend, URLPattern API, а также дальнейшая интеграция JavaScript и WebAssembly (WASM). В этом же ряду такие интересные фичи как правило @scope, View Transition API, якорное позиционирование и другие. Больше подробностей и полный список фич по ссылке. |
| 72 | +</ParagraphWithImage> |
| 73 | + |
| 74 | +Продолжается [юридический танец](https://deno.com/blog/deno-v-oracle2) вокруг торговой марки JavaScript. Oracle, возможно намеренно, ответил на прошение не вполне корректно оформленным своим прошением. До самого JavaScript, кстати, пока так и не добрались. И непонятно, когда доберутся. Если вам интересно, в блоге Deno вы можете прочитать всю историю и юридические документы. Кстати, оказалось неожиданно интересно. |
| 75 | + |
| 76 | +На сегодня это всё. Всем пока и до встречи в следующем выпуске. |
| 77 | + |
| 78 | + ### Пишите нам и читайте |
| 79 | + [Telegram—канал CSSSR](https://t.me/csssr) |
| 80 | + |
| 81 | + [Twitter CSSSR](https://twitter.com/csssr_dev) |
| 82 | + |
| 83 | + [Twitter новостей](https://twitter.com/csssr_news) |
| 84 | + |
| 85 | + [Telegram ведущего](https://t.me/Vindizh) |
| 86 | + |
| 87 | + [Twitter ведущего](https://twitter.com/Vindizh) |
0 commit comments