All streams
Search
Write a publication
Pull to refresh
317
37.6
Igor Agapov @aio350

JavaScript Developer

Send message

TypeScript: паттерны проектирования. Часть 2

Reading time10 min
Views15K


Привет, друзья!


Представляю вашему вниманию перевод второй части серии статей, посвященных паттернам проектирования в TypeScript.


Спасибо Денису Улесову за помощь в переводе материала.


Паттерны (или шаблоны) проектирования (design patterns) описывают типичные способы решения часто встречающихся проблем при проектировании программ.


В отличие от готовых функций или библиотек, паттерн нельзя просто взять и скопировать в программу. Паттерн представляет собой не какой-то конкретный код, а общую концепцию решения той или иной проблемы, которую нужно будет еще подстроить под нужды вашей программы.

Читать дальше →

TypeScript: паттерны проектирования. Часть 1

Reading time10 min
Views26K


Привет, друзья!


Представляю вашему вниманию перевод первой части серии статей, посвященных паттернам проектирования в TypeScript.


Спасибо Денису Улесову за помощь в переводе материала.


Паттерны (или шаблоны) проектирования (design patterns) описывают типичные способы решения часто встречающихся проблем при проектировании программ.


В отличие от готовых функций или библиотек, паттерн нельзя просто взять и скопировать в программу. Паттерн представляет собой не какой-то конкретный код, а общую концепцию решения той или иной проблемы, которую нужно будет еще подстроить под нужды вашей программы.

Читать дальше →

JavaScript: управление содержимым веб-страницы с помощью жестов

Reading time19 min
Views9.7K


Привет, друзья!


Еще недавно управление содержимым веб-страницы с помощью жестов можно было наблюдать разве что в фантастических фильмах. Сегодня все, что для этого требуется — видеокамера и браузер (и библиотека от Google).


В данном туториале мы рассмотрим 5 примеров:


  • получение данных с видеокамеры и их отрисовка на холсте (canvas);
  • обнаружение и отслеживание кисти руки;
  • управление "курсором" с помощью указательного пальца;
  • определение жеста "щипок" (pinch);
  • нажатие кнопки с помощью щипка.

Все примеры будут реализованы на чистом JavaScript.


Источником вдохновения для меня послужила эта замечательная статья.


Для обнаружения и отслеживания руки и жестов будет использоваться MediaPipe. Для работы с зависимостями — Yarn.


Код примеров можно найти в этом репозитории.

Читать дальше →

React: все о новом предложении — хуке use()

Reading time7 min
Views9.3K


Привет, друзья!


Представляю вашему вниманию перевод этой небольшой заметки, посвященной предложению нового хука React.


Первоклассная поддержка промисов в React — как это должно работать


Новое предложение от команды React вызвало некоторую шумихи в экосистеме React: одни разработчики с нетерпением ждут новых возможностей, другие выражают обеспокоенность тем, как это будет реализовано. В этой статье мы поговорим о том, что из себя представляет новая возможность, какие проблемы она решает, а также о сложностях, которые могут возникнуть в процессе ее реализации и применения.

Читать дальше →

Следующий этап развития Веба

Reading time17 min
Views16K


Привет, друзья!


Представляю вашему вниманию перевод этой замечательной статьи, которая содержит интересный обзор истории развития веб-разработки с точки зрения используемой архитектуры.


Веб состоит из технологий, появившихся более 25 лет назад. HTTP, HTML, CSS и JS были стандартизированы в середине 90-х (когда мне было 8 лет). С тех пор веб эволюционировал в вездесущую платформу приложений. Одновременно с эволюцией веба развивалась и архитектура разработки соответствующих приложений. Сегодня существует большое количество архитектур, которые можно использовать для разработки веб-приложений. В настоящее время самой популярной из них является "Одностраничное приложение" (Single Page App, SPA), но сейчас наблюдается переход к новой улучшенной архитектуре.

Читать дальше →

JavaScript: редко используемые, но полезные API

Reading time13 min
Views11K


Привет, друзья!


В продолжение разговора, начатого в этой статье, хочу рассказать вам еще о некоторых API, которые редко встречаются в "дикой природе", но могут оказаться весьма полезными в "пограничных ситуациях":



Репозиторий с примерами.

Читать дальше →

React, я люблю тебя, но ты сводишь меня с ума

Reading time13 min
Views20K


Привет, друзья!


Представляю вашему вниманию перевод этой статьи, вызывавшей определенный резонанс в сообществе React-разработчиков.


Дорогой React, мы встречаемся уже почти 10 лет. Мы прошли долгий путь вместе. Но ситуация вышла из-под контроля. Нам нужно поговорить.

Читать дальше →

JavaScript: малоизвестные, но полезные API

Reading time10 min
Views24K


Привет, друзья!


Представляю вашему вниманию перевод этой замечательной статьи, посвященной 4 малоизвестным API, которые в некоторых ситуациях могут оказаться весьма полезными:



Код примеров на GitHub.

Читать дальше →

Разрабатываем библиотеку компонентов с помощью React и TypeScript

Reading time8 min
Views15K


Привет, друзья!


В этой статье я покажу вам, как начать разработку библиотеки компонентов с помощью Vite, React, TypeScript и Storybook.


Мы разработаем библиотеку, состоящую из одного простого компонента — кнопки, подготовим библиотеку к публикации в реестре npm, а также сгенерируем и визуализируем документацию для кнопки.


Репозиторий с кодом проекта.


Если вам это интересно, прошу под кат.

Читать дальше →

TypeScript в деталях. Часть 3

Reading time14 min
Views24K


Привет, друзья!


Представляю вашему вниманию перевод еще нескольких статей из серии Mastering TypeScript, посвященных углубленному изучению TypeScript.


Читать дальше →

React: разрабатываем кастомный useEffect

Reading time10 min
Views7.4K


Привет, друзья!


В данной статье мы с вами разработаем кастомный хук, функционал которого будет аналогичен функционалу встроенного хука useEffect, за исключением того, что наш useEffect будет повторно выполняться только при изменении его зависимостей любого типа (неважно, примитивы это или объекты).


Предполагается, что вы хорошо знакомы с тем, как работает хук useEffect, а также с тем, когда и почему происходит повторный рендеринг React-компонентов. Если нет, вот парочка ссылок:



Этого должно быть достаточно для понимания того, о чем мы будем говорить. В дальнейшем будет приведено еще несколько ссылок для более глубокого погружения в тему.


Код проекта, с которым мы будем работать, можно найти здесь.


Начнем с примера.

Читать дальше →

TypeScript в деталях. Часть 2

Reading time11 min
Views16K


Привет, друзья!


Представляю вашему вниманию перевод еще нескольких статей из серии Mastering TypeScript, посвященных углубленному изучению TypeScript.


Читать дальше →

TypeScript: разбираем исходный код Radash

Reading time13 min
Views5.4K


Привет, друзья!


Radash — это современная альтернатива Lodash, библиотека, предоставляющая набор часто используемых утилит (вспомогательных функций), реализованных на TypeScript. В данной статье мы вместе с вами разберем исходный код нескольких наиболее интересных утилит.


Репозиторий с кодом библиотеки находится здесь.


Обратите внимание: я позволил себе немного модифицировать отдельные утилиты для повышения читаемости и сокращения шаблонного кода. Также в нескольких местах пришлось поправить типы.


Для тех, кому интересно, вот большая коллекция сниппетов JavaScript.


Начнем с чего-нибудь попроще.

Читать дальше →

TypeScript в деталях. Часть 1

Reading time6 min
Views32K


Привет, друзья!


Представляю вашему вниманию перевод нескольких статей из серии Mastering TypeScript, посвященных углубленному изучению TypeScript.


Читать дальше →

React: разрабатываем HOC и хук для наблюдения за элементами

Reading time9 min
Views13K


Привет, друзья!


В данной статье мы с вами разработаем HOC (Higher-Order Component — компонент высшего порядка) и хук (custom hook) для наблюдения за DOM-элементами на странице с помощью Intersection Observer API.


Функционал нашего HOC будет похож на функционал, предоставляемый такими пакетами, как react-lazyload или react-lazy-load. Основное его назначение будет состоять в отложенной (ленивой — lazy) загрузке компонентов. Суть идеи заключается в рендеринге только тех компонентов, которые находятся в области просмотра (viewport — вьюпорт), что может существенно повысить производительность приложения.


Назначением хука будет регистрация пересечения (intersection) наблюдаемого (observable) элемента с областью просмотра (или другим элементом). Этот хук предоставляет очень интересные возможности, парочка из которых будет рассмотрена в соответствующем разделе.


Репозиторий с кодом проекта


При разработке инструментов я буду применять систему типов, предоставляемую TypeScript.


Если вам это интересно, прошу под кат.

Читать дальше →

React: полное руководство по повторному рендерингу

Reading time8 min
Views73K


Привет, друзья!


Представляю вашему вниманию перевод этой замечательной статьи, посвященной повторному рендерингу (re-render, далее — ререндеринг) в React.


Что такое ререндеринг?


Существует 2 основные стадии, которым следует уделять пристальное внимание, когда речь заходит о производительности в React:


  • первоначальный рендеринг (initial rendering) — происходит, когда компонент впервые появляется на экране;
  • ререндеринг — второй и последующие рендеринги компонента.

Ререндеринг происходит, когда React необходимо обновить приложение некоторыми данными. Обычно, это является результатом действий пользователя, получения ответа на асинхронный запрос или публикацию при подписке (паттерн "pub/sub" — публикация/подписка или издатель/подписчик) на определенные данные.

Читать дальше →

Заметка о Redux и Zustand

Reading time8 min
Views13K


Привет, друзья!


На днях мне на глаза попалась статья, посвященная разработке корзины товаров на React с помощью Redux Toolkit для управления состоянием приложения и Redux Persist для хранения состояния в localStorage.


В этой заметке я покажу, как реализовать аналогичный функционал с помощью Zustand, что позволит вам наглядно убедиться в его преимуществах перед Redux как с точки зрения количества кода, так и с точки зрения производительности.



Если вам это интересно, прошу под кат.

Читать дальше →

Заметка о Mapped Types и других полезных возможностях современного TypeScript

Reading time9 min
Views21K


Привет, друзья!


Представляю вашему вниманию перевод 2 статей:


Читать дальше →

Заметка о полезных возможностях современного CSS

Reading time10 min
Views14K


Привет, друзья!


В данной заметке я расскажу вам о некоторых полезных возможностях, предоставляемых современным CSS. Также мы немного поговорим о полезных "фичах", которые ждут нас в ближайшие 2 года.


"Полезный" означает, что я либо часто использую фичу в своих проектах, либо с нетерпением жду такой возможности.

Читать дальше →

Разрабатываем чат с помощью Nest, React и Postgres

Reading time17 min
Views22K


Привет, друзья!


В данном туториале мы разработаем чат с использованием следующих технологий:


  • TypeScript — статический типизатор;
  • NestJS — сервер;
  • Socket.IO — библиотека для работы в веб-сокетами;
  • React — клиент;
  • TailwindCSS — библиотека для стилизации;
  • PostgreSQL — база данных (далее — БД);
  • PrismaORM;
  • Docker — платформа для разработки, доставки и запуска приложений в изолированной среде — контейнере.

Функционал чата будет таким:


  • фейковая регистрация пользователей:
    • хранение имен пользователей в памяти (объекте) на сервере;
    • хранение имен и идентификаторов пользователей в localStorage на клиенте;
  • регистрация подключений и отключений пользователей на сервере и передача этой информации подключенным клиентам;
  • запись, обновление и удаление сообщений из БД в реальном времени на сервере и передача этой информации клиентам.

Репозиторий с кодом проекта.


Если вам это интересно, прошу под кат.

Читать дальше →

Information

Rating
204-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Frontend Developer
Senior
JavaScript
HTML
React
TypeScript
CSS
Web development
Node.js
Express
Webpack
NextJS