Forwarded from Defront — про фронтенд-разработку и не только (Alexander Myshov)
Группировка элементов массива с помощью groupBy
На последней встрече TC39 пропозал groupBy перешёл на stage 3. Лаури Барт рассказала о том, как он работает — "Array Grouping Explainer".
Группировка элементов массива распространённая операция. Она поддерживается всеми популярными утилитарными библиотеками (lodash, ramda). Пропозал реализует похожий алгоритм из этих библиотек. Метод
Также в пропозале есть второй метод
#js #proposal
https://laurieontech.com/posts/array-grouping/
На последней встрече TC39 пропозал groupBy перешёл на stage 3. Лаури Барт рассказала о том, как он работает — "Array Grouping Explainer".
Группировка элементов массива распространённая операция. Она поддерживается всеми популярными утилитарными библиотеками (lodash, ramda). Пропозал реализует похожий алгоритм из этих библиотек. Метод
groupBy
принимает коллбек, в параметрах которого передаются текущий элемент, текущий индекс и сам массив. Элементы массива разбиваются на группы на основе строки, которая возвращается коллбеком. В результате получается объект с распределёнными элементами массива:
const names = ['vasya', 'vasilisa', 'oleg'];
const groupedNames = names.groupBy(name => {
return name.charAt(0);
}
// результат:
// {v: ['vasya', 'vasilisa'], o: ['oleg']}
Также в пропозале есть второй метод
groupByToMap
, который работает точно также как groupBy
, но возвращает не объект, а Map
.#js #proposal
https://laurieontech.com/posts/array-grouping/
Laurieontech
Array Grouping Explainer
Another new ECMAScript proposal hits Stage 3. Let's talk about it!
Forwarded from Defront — про фронтенд-разработку и не только (Alexander Myshov)
Возможно, вам не нужен Rust и WASM, если у вас есть JavaScript
Увидел в канале @ufostation ссылку на статью Вячеслава Егорова про анализ проблем производительности библиотеки source-map — "Maybe you don't need Rust and WASM to speed up your JS".
Авторы source-map переписали основную логику библиотеки на Rust и WebAssembly, чтобы улучшить производительность. Егор решил проверить оригинальный код на предмет возможных оптимизаций. Там были найдены и исправлены проблемы, связанные с неоптимальной сортировкой, была уменьшена нагрузка на сборщик мусора заменой большого числа объектов типизированным массивом с ссылками на нужные данные, была испралвена проблема с деоптимизацией кода, связанной с передачей двух аргументов в функцию, которая ожидает на вход три аргумента.
В результате всех оптимизаций JavaScript-код стал уступать по скорости Rust и WebAssembly всего лишь на 15%.
Крутая статья. Рекомендую почитать всем.
#performance #js #internals #webassembly #rust
https://mrale.ph/blog/2018/02/03/maybe-you-dont-need-rust-to-speed-up-your-js.html
https://habr.com/ru/post/350018/ (перевод на русский)
Увидел в канале @ufostation ссылку на статью Вячеслава Егорова про анализ проблем производительности библиотеки source-map — "Maybe you don't need Rust and WASM to speed up your JS".
Авторы source-map переписали основную логику библиотеки на Rust и WebAssembly, чтобы улучшить производительность. Егор решил проверить оригинальный код на предмет возможных оптимизаций. Там были найдены и исправлены проблемы, связанные с неоптимальной сортировкой, была уменьшена нагрузка на сборщик мусора заменой большого числа объектов типизированным массивом с ссылками на нужные данные, была испралвена проблема с деоптимизацией кода, связанной с передачей двух аргументов в функцию, которая ожидает на вход три аргумента.
В результате всех оптимизаций JavaScript-код стал уступать по скорости Rust и WebAssembly всего лишь на 15%.
Крутая статья. Рекомендую почитать всем.
#performance #js #internals #webassembly #rust
https://mrale.ph/blog/2018/02/03/maybe-you-dont-need-rust-to-speed-up-your-js.html
https://habr.com/ru/post/350018/ (перевод на русский)
Хабр
Возможно, вам не нужен Rust, чтобы ускорить ваш JS
Несколько недель назад я обнаружил пост "Окисляем Source Maps с Rust и WebAssembly" распространяющийся по Твиттеру и расказывающий о выигрыше в производительности от замены обычного JavaScript в...
Forwarded from Defront — про фронтенд-разработку и не только (Alexander Myshov)
Пропозал "await.ops"
Недавно узнал про пропозал "await.ops" — расширение
Благодаря новым операторам в код получается немного короче, так как отпадает необходимость в написании
На данный момент "await.ops" находится на Stage 1, и его поддержки в браузерах нет. Авторы ищут дополнительные сценарии использования предложения для продвижения на Stage 2.
#js #proposal
https://github.com/tc39/proposal-await.ops
Недавно узнал про пропозал "await.ops" — расширение
await
операторами await.all
, await.any
, await.race
и await.allSettled
. Они работают точно также как одноимённые методы у Promise
.Благодаря новым операторам в код получается немного короче, так как отпадает необходимость в написании
Promise
:
// до
await Promise.all(users.map(async x => fetchProfile(x.id)))
// после
await.all users.map(async x => fetchProfile(x.id))
На данный момент "await.ops" находится на Stage 1, и его поддержки в браузерах нет. Авторы ищут дополнительные сценарии использования предложения для продвижения на Stage 2.
#js #proposal
https://github.com/tc39/proposal-await.ops
GitHub
GitHub - tc39/proposal-await.ops: Introduce await.all / await.race / await.allSettled / await.any to simplify the usage of Promises
Introduce await.all / await.race / await.allSettled / await.any to simplify the usage of Promises - tc39/proposal-await.ops
Forwarded from Defront — про фронтенд-разработку и не только (Alexander Myshov)
Абсолютные импорты в JavaScript
Евгений Карагодин написал статью про настройку абсолютных импортов — "Абсолютные импорты в JavaScript".
Относительные пути в спецификаторах импортов могут быть неудобны в проектах с глубокой вложенностью директорий. Поэтому были придуманы разные способы для импорта файлов от корня проекта. В статье рассказывается про основные способы упрощения работы с импортами. Про сложность настройки абсолютных импортов в Node.js-проектах c TypeScript и тест-раннерами.
Ситуация со сложностью настройки импортов изменится после имплементации спецификация import maps, с помощью которой можно будет управлять резолвингом модулей. На данный момент import maps поддерживаются только в Deno,
#js #esm
https://blog.ekaragodin.com/TH2jgliMXOO
Евгений Карагодин написал статью про настройку абсолютных импортов — "Абсолютные импорты в JavaScript".
Относительные пути в спецификаторах импортов могут быть неудобны в проектах с глубокой вложенностью директорий. Поэтому были придуманы разные способы для импорта файлов от корня проекта. В статье рассказывается про основные способы упрощения работы с импортами. Про сложность настройки абсолютных импортов в Node.js-проектах c TypeScript и тест-раннерами.
Ситуация со сложностью настройки импортов изменится после имплементации спецификация import maps, с помощью которой можно будет управлять резолвингом модулей. На данный момент import maps поддерживаются только в Deno,
#js #esm
https://blog.ekaragodin.com/TH2jgliMXOO
Teletype
Абсолютные импорты в JavaScript
Так уж сложилось, что в JavaScript импорты относительные. Но в любом более-менее крупном проекте это быстро превращается в ад (relative...
Forwarded from Daily Coding 🔥
🛠 Wallaby — это инструмент для повышения продуктивности разработки. Он запускает JavaScript и TypeScript-тесты пока вы пишете код и выводит результаты в IDE рядом с кодом. Это расширение очень полезное, поскольку позволяет видеть вывод и дебажить в режиме реального времени.
Daily Coding #инструменты #js #TypeScript
Daily Coding #инструменты #js #TypeScript
Forwarded from The Devs
Forwarded from The Devs
Forwarded from The Devs
Crafting the Next.js Website.
#article #html #css #js
@thedevs
@thedevs_design
https://thedevs.link/hB2BWF
#article #html #css #js
@thedevs
@thedevs_design
https://thedevs.link/hB2BWF
Forwarded from The Devs
Introducing the MDN Playground: Bring your code to life.
#article #js #html #css #tools
@thedevs
@thedevs_js
https://thedevs.link/UlFNBn
#article #js #html #css #tools
@thedevs
@thedevs_js
https://thedevs.link/UlFNBn
Forwarded from The Devs
Forwarded from The Devs
Forwarded from The Devs
Forwarded from The Devs
Eloquent JavaScript (4th edition): A modern introduction to programming.
#books #js
@thedevs
@thedevs_js
https://thedevs.link/ebFgS5
#books #js
@thedevs
@thedevs_js
https://thedevs.link/ebFgS5
Forwarded from The Devs
Optimizing Javascript for fun and for profit.
#article #js
@thedevs
@thedevs_js
https://thedevs.link/kYqJzZ
#article #js
@thedevs
@thedevs_js
https://thedevs.link/kYqJzZ
Forwarded from The Devs
Forwarded from The Devs
How web bloat impacts users with slow devices.
#article #coding #web #js
@thedevs
@thedevs_js
https://thedevs.link/ir8iwV
#article #coding #web #js
@thedevs
@thedevs_js
https://thedevs.link/ir8iwV
Forwarded from The Devs
Forwarded from The Devs
The nature of code: simulating natural systems with p5.js.
#book #js #processing
@thedevs
https://thedevs.link/4ocAMR
#book #js #processing
@thedevs
https://thedevs.link/4ocAMR
Forwarded from The Devs
Forwarded from The Devs
Bookmarkable by Design: URL-Driven State in HTMX.
#article #coding #frontend #js
@thedevs
@thedevs_js
https://thedevs.link/q7xHqX
#article #coding #frontend #js
@thedevs
@thedevs_js
https://thedevs.link/q7xHqX