Category : javascript

javascript
Ускорить таблицу на React в 1 000 раз, изменив лишь одну строку

JP Camara, главный инженер Wealthbox, в своём блоге поделился интересным опытом ускорения TanStack Table — новой версии React-библиотеки для создания функциональных таблиц — аж до 10 мс. Делимся с вами переводом его статьи.JP CamaraГлавный инженер Wealthbox — CRM для финансовых консультантовНесколько месяцев назад я работал над интерфейсом JavaScript для большого набора данных, используя TanStack Table. Ограничения были такие: максимум 50 тыс. строк контента,группировка до 3 колонок.Производит…

  • четверг, 27 июля 2023 г. в 00:00:13
javascript
Сквозь время – ускоряем автотесты

Со временем каждый уважающий себя проект обрастает модульными и интеграционными тестами. В идеальном мире автотесты должны проходить быстро, чтобы их хотелось запускать как локально, так и в CI. Но почему в большинстве проектов запуск тестов отнимает критически много времени?– Зачастую причиной является неправильная работа с асинхронными операциями. В статье разберемся, как Jest помогает писать молниеносные тесты, и рассмотрим ключевые сценарии.Дисклеймер: В данной статье примеры рассматривают…

  • четверг, 27 июля 2023 г. в 00:00:11
javascript
Считаем 2+2×2

Статья-туториал для тех, кто хочет узнать, как из заголовка получается «6» методом рекурсивного спуска. Начнём с самого простого и дойдём до вычисления -1.82 или около того из строки -2.1+ .355 / (cos(pi % 3) + sin(0.311)).Конечно, этот метод неоднократно описан на Хабре и зачитан каждому айтишному первокурснику. В своей версии я хочу изложить его очень просто и подробно, с позиции элементарной практики на JavaScript. Ссылки на рабочий код — в самом низу.«2»Разберём невыносимо простой пример: …

  • четверг, 27 июля 2023 г. в 00:00:11
javascript
Вывод типов в TypeScript. Неизменяемый массив конкретных строковых значений

ВведениеРешим реальную практическую задачу, с которой мне пришлось столкнуться на моем проекте React/TypeScript.ЗадачаУ нас есть массив конкретных строковых значений, таких как "first", "second", "third", "fourth" и "fifth". Необходимо отобразить их на странице, т.е как-то использовать, а также убедиться, чтобы эти данные были строго типизированы и TypeScript нам выдавал всплывающие подсказки при их использовании в коде.РешениеСначала поместим данные в н…

  • среда, 26 июля 2023 г. в 00:00:15
javascript
Внедрение зависимостей в ES6+ «на пальцах»

В своём предыдущем посте я попытался объяснить, что такое "инверсия контроля" и в каких случаях использование внедрения зависимостей в JS (ES6+) становится оправданным (если у вас в кодовой базе десятки npm-пакетов, в каждом из которых сотни, а то и тысячи es6-модулей). В этом посте я шаг за шагом покажу, как можно построить собственный контейнер объектов, который будет загружать исходный код es6-модулей, создавать нужные зависимости и вставлять их в нужные места. Сразу предупреждаю, ч…

  • среда, 26 июля 2023 г. в 00:00:14
javascript
Явное управление ресурсами: пробуем новую фичу JavaScript и TypeScript

Одной из самых интересных грядущих новинок JavaScript и TypeScript для меня является явное управление ресурсами. Новый синтаксис using foobar = … реализует идиому RAII, позволяя писать намного менее многословный код, управляющий какими-либо ресурсами. В этой статье я хочу на примерах разобрать эту фичу — в том виде, в котором она сейчас доступна в TypeScript 5.2.0-beta с полифиллом disposablestack. Я рассмотрю синхронные и асинхронные ресурсы, DisposableStack/AsyncDisposableStack, а также п…

  • среда, 26 июля 2023 г. в 00:00:14
javascript
Viem & Wagmi — новая замена ethers

ВступлениеПривет! Сегодня мы рассмотрим относительно новую библиотеку для интеграции с web3 - viem. Мы постараемся понять, способна ли эта библиотека заменить ethers и какие преимущества она предлагает.Кому подойдет эта статья?Если вы хорошо владеете javascript и знакомы с ethers или прочли мои статьи Ethers js - Основы и Ethers js - Транзакции, то можете смело читать дальше. В другом случае материал может быть сложен для восприятия.СодержаниеЧто такое viem?Преимущества и недостатки viemЭкосис…

  • вторник, 25 июля 2023 г. в 00:00:23
javascript
Как React 18 улучшает производительность приложения

React 18 представил конкурентные (concurrent) возможности, которые радикально меняют способ рендеринга приложений. В этой статье мы рассмотрим, как эти возможности улучшают производительность приложения. Начнем с повторения основ "долгих (долго выполняющихся) задач" (long tasks) и соответствующих метрик производительности. Основной поток (main thread) и долгие задачи Когда мы запускаем JavaScript в браузере, движок JS выполняет код в однопоточной среде, которую часто называют "осн…

  • вторник, 25 июля 2023 г. в 00:00:23
javascript
Интересные трюки JS, HTML и CSS, #2

Небольшая подборка нестандартных вариантов использования HTML/JS/CSS, где каждый найдёт что-то интересное. Если информация окажется полезной, будем собирать эти хаки на постоянной основе и публиковать по мере накопления. Предыдущая часть здесь. В этом выпуске — DevTools для мобильных браузеров, CSS-антистресс для Booking.com (на КДПВ), единственная защита от фингерпринтинга (спойлер: это браузер Tor, он же Firefox) и др. ▍ Фингерпринтинг как сервис Услугу фингерпринтинга пользователей теп…

  • вторник, 25 июля 2023 г. в 00:00:22