Pull to refresh
5
0

Full Stack Developer

Send message

Создание React-ивного хука usePosition() для получения и отслеживания координат браузера

Reading time4 min
Views11K

image


Если вкратце


В этой статье мы создадим React-ивный хук usePosition() для отслеживания геолокации браузера. Под капотом этот хук будет использовать методы getCurrentPosition() и watchPosition() нативного браузерного объекта navigator.geolocation. Финальную версию хука я опубликовал на GitHub и NPM.


Зачем создавать хук usePosition() в принципе


Одно из важных преимуществ хуков в React-е — это возможность изолировать логически связанные фрагменты кода в одном месте (в хуке), избежав при этом необходимости смешивания логически не связанных фрагментов кода, например, в методе компонента componentDidMount().


Предположим, мы хотим получить координаты браузера (latitude и longitude) и после получения координат запросить прогноз погоды или текущую температуру в этом регионе со стороннего сервиса. Код этих двух функциональностей (получения координат и запроса температуры) в React-е часто размещают внутри одного метода componentDidMount(). При этом в методе componentWillUnmount() обычно "убирают" за собой, вызывая метод clearWatch() для прекращения слежки за локацией браузера. Подобный подход увеличивает размер методов, разбивает логически связанные участки кода на части (отдельно подписка и отписка от слежки за локацией браузера) и объединяет логически слабо связанные части кода в один метод (получение координат и температуры). Чтение кода затрудняется, так же как и его отладка и поддержка.


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

Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments1

Whoosh — минималистичный менеджер состояний React

Reading time8 min
Views7.9K

Привет, Хабр!


Разрешите поделиться своим велосипедом. Речь пойдет о минималистичном менеджере состояний React, интерфейс которого состоит из одной функции — createShared().



GitHub репозиторий проекта

Читать дальше →
Total votes 13: ↑10 and ↓3+7
Comments13

Как сделать свой собственный менеджер состояния в React всего с одним хуком

Reading time5 min
Views5.4K

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

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

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments1

YouTube Vanced больше нет. Но есть ReVanced

Reading time8 min
Views157K


Статья навеяна этой новостью на Хабре


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

Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments97

Как создавать иконки сайтов в 2022 году — всё о favicon

Reading time9 min
Views33K

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

Статья глубоко погружается в тему, поэтому в начале я даю два фрагмента кода для тех, кто уже достаточно настрадался и понимает, что делать. Тем не менее, я всем рекомендую читать статью целиком!

Статья целиком
Total votes 39: ↑39 and ↓0+39
Comments33

Релокация на машине в Армению

Reading time14 min
Views60K

Доброго дня всем хабровчанам. Примерно месяц назад я переехал из Москвы жить и работать в Ереван. С тех пор периодически меня спрашивают про то как мне удалось доехать до Армении на автомобиле, как вообще устроена релокация и как мне живется после переезда. Так что я подумал-подумал и решил написать об этом статью на Хабр.

Для тех кто заинтересовался
Total votes 88: ↑80 and ↓8+72
Comments247

Лучшие подходы и решения для уменьшения кода на React. Часть 1

Reading time3 min
Views7.5K

Доброго времени суток! В данной серии статей вы узнаете подходы, которые помогут Вам писать более красивый React код, а также познакомитесь с способами сделать части кода более универсальными.

Всего в данной серии 3 статьи:

Лучшие подходы и решения для уменьшения кода на React. Часть 1
Лучшие подходы и решения для уменьшения кода на React. Часть 2
Лучшие подходы и решения для уменьшения кода на React. Часть 3

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments8

Лучшие подходы и решения для уменьшения кода на React. Часть 2

Reading time4 min
Views5K

Привет. Это перевод второй статьи из серии “Лучшие подходы и решения для уменьшения кода на React” автора Rahul Sharma.

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

Всего в данной серии 3 статьи, и найти их все вы можете по ссылкам ниже:

Часть 1
Часть 2
Часть 3

Читать далее
Total votes 6: ↑4 and ↓2+2
Comments4

Подробно о том, как работают React Server Components

Reading time16 min
Views16K

React Server Components (RSC) — интересная новая фича в React.

Есть вероятность, что в ближайшем будущем она сильно повлияет на скорость загрузки страниц, размер бандлов и то, как мы будем писать приложения на React. Мы в Plasmic (место работы автора) делаем визуальный конструктор для React и очень заботимся о производительности. Многие из наших клиентов используют Plasmic для создания маркетинговых сайтов и сайтов электронной коммерции, и производительность там критически важна. Так что хотя RSC — пока что ранняя экспериментальная функция React 18, мы разобрались, как она работает под капотом. Об этом и расскажем в статье.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments1

Опыт SЕО оптимизации кода на NextJS

Reading time5 min
Views7.7K

Оптимизация Сео Аудита на NextJS. Это ненастолько удачное занятие, поскольку, по моему опыту, он не дает полного контроля над event loop, который и надо приоритетно оптимизировать. Однако NextJS дает очень высокую скорость разработки, которая нужна многим продуктам, поэтому научится поднимать до 90 обязательно и в этой статье я поделюсь какие шаги мне помогли этого достичь.

Читать далее
Total votes 13: ↑11 and ↓2+9
Comments11

[Redux] Мой любимый устаревший вопрос на собеседовании

Reading time7 min
Views55K

Время от времени мне приходится проводить собеседования. И сегодня я хочу поделиться моими любимыми вопросами на тему Redux. К сожалению, вопросы немного устарели, т.к. они касаются компонента высшего порядка connect, который активно заменяют на хуки. Но connect может уже и не сильно актуален, а принципы на которых он построен абсолютно не изменились. (Данная статья является расшифровкой видео).

Читать далее
Total votes 33: ↑26 and ↓7+19
Comments63

Next.js: подробное руководство. Итерация вторая

Reading time33 min
Views41K


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


Хочу поделиться с вами заметками о Next.js (надеюсь, кому-нибудь пригодится).


Next.js — это основанный на React фреймворк, предназначенный для разработки веб-приложений, обладающих функционалом, выходящим за рамки SPA, т.е. так называемых одностраничных приложений.


Как известно, основным недостатком SPA являются проблемы с индексацией страниц таких приложений поисковыми роботами, что негативно влияет на SEO.


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


Кроме того, существуют специальные инструменты, такие как react-snap, позволяющие превратить React-SPA в многостраничник путем предварительного рендеринга приложения в статическую разметку. Метаинформацию же можно встраивать в head с помощью таких утилит, как react-helmet. Однако Next.js существенно упрощает процесс разработки многостраничных и гибридных приложений (последнего невозможно добиться с помощью того же react-snap). Он также предоставляет множество других интересных возможностей.



Обратите внимание: данная статья предполагает, что вы обладаете некоторым опытом работы с React. Также обратите внимание, что заметки не сделают вас специалистом по Next.js, но позволят получить о нем исчерпывающее представление.


Заметки состоят из 2 частей. Это часть номер два.


Итерация первая

Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments1

Что нужно знать о вёрстке под ретину

Reading time8 min
Views23K

Ретиной называют дисплеи Apple с повышенной плотностью пикселей на квадратный дюйм. Впервые о них заговорили в 2010 году, когда Стив Джобс презентовал iPhone 4. Новый на тот момент смартфон получил экран с плотностью 326 PPI — в два раза выше, чем у его предшественника iPhone 3GS.

Ретина-дисплеи вывели смартфоны на новый уровень. По словам самого Стива Джобса, на ретина-дисплеях удалось достичь такого PPI, на котором человеческий глаз перестаёт различать отдельные пиксели. Текст стал выглядеть так, словно он выведен не на экран мобильного устройства, а напечатан в хорошей книге.

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

Читать далее
Total votes 21: ↑20 and ↓1+19
Comments8

Styled Components — идеальная стилизация React-приложения

Reading time15 min
Views63K

Это статья о Styled Components будет полезна новичкам и старичкам. Для понимания материала нужны базовые навыки работы с React и TypeScript.

Styled Components — одно из популярных решений написания кода методом CSS in JS. Гибкое, простое и, главное, идеально вписывается в архитектуру React приложения.

Разберём данную библиотеку на базовых примерах в связке с TypeScript. Также поделюсь своими лучшими практиками при написание кода.

Читать далее
Total votes 5: ↑3 and ↓2+1
Comments18

Полное руководство по инкрементной регенерации статических сайтов с помощью Next.js

Reading time10 min
Views15K
Год назад во фреймворке Next.js 9.3 появилась поддержка генерирования статических сайтов (Static Site Generation, SSG), что сделало его первым гибридным фреймворком. Я к тому моменту уже несколько лет с удовольствием пользовался Next.js. Но тот релиз сделал Next.js моим новым стандартным инструментом. После того, как я много и серьёзно поработал с Next.js, я присоединился к Vercel для того чтобы помогать компаниям, вроде Tripadvisor и Washington Post, в деле внедрения Next.js и расширения того, что у них получилось.

В этом материале мне хотелось бы исследовать новый виток эволюции Jamstack — механизм инкрементной регенерации статических сайтов (Incremental Static Regeneration, ISR). Здесь вы найдёте руководство по ISR, а так же — практические примеры использования этой технологии, демонстрационные проекты и рассказ о сопутствующих внедрению ISR компромиссах.



Если в двух словах описать ISR, то окажется, что эта технология позволяет, при внесении каких-то изменений в материалы сайта, мгновенно обновлять статический контент. Полная пересборка проекта при этом не нужна. Гибридный подход Next.js позволяет использовать ISR в сфере электронной коммерции, при подготовке маркетинговых и рекламных страниц, при организации работы блогов и во многих других случаях.
Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments3

Летаем на дроне легально

Reading time4 min
Views28K

В детстве практически каждый из нас ходил в кружки моделирования и пытался строить свои радиоуправляемые модели. Скажу сразу, ни одну управляемую модель я так и не собрал, хотя ракеты мои летали исправно и даже приземлялись на парашюте ("Илон, трепещи!"). Довольно много прочитал про это, но нелёгкая увела в сторону ИТ и моделирование забросил.

Лет 5 назад мне подарили дрон, ноунейм дрон. Это была очень простая копия DJI Phantom 1, которая не умела держать высоту, летать против ветра и снимать лучше кнопочного телефона 2002 года. В общем, один раз запустили, у него сели батарейки, да и больше не было желания к нему прикасаться. Зато вновь появился интерес к радиоуправляемым моделям (дронам).

Дальше мне подарили DJI Spark - мой первый нормальный дрон, который умел снимать вот так

Читать далее
Total votes 31: ↑28 and ↓3+25
Comments56

Разрабатываем чат на React с использованием Socket.IO

Reading time18 min
Views63K


Доброго времени суток, друзья!

Хочу поделиться с вами опытом разработки простого чата на React с помощью библиотеки «Socket.IO».

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

Также предполагается, что вы хотя бы поверхностно знакомы с Node.js.

В данной статье я сосредоточусь на практической составляющей совместного использования Socket.IO, React и Node.js.

Наш чат будет иметь следующие основные возможности:

  • Выбор комнаты
  • Отправка сообщений
  • Удаление сообщений отправителем
  • Хранение сообщений в локальной базе данных в формате JSON
  • Хранение имени и идентификатора пользователя в локальном хранилище браузера (local storage)
  • Отображение количества активных пользователей
  • Отображение списка пользователей с онлайн-индикатором

Также мы реализуем возможность отправки эмодзи.

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

Для тех, кого интересует только код: вот ссылка на репозиторий.

Песочница:

Total votes 6: ↑6 and ↓0+6
Comments1

Nuxt.js app от UI-кита до деплоя. Часть 2: Темная тема

Reading time5 min
Views3.7K
Привет, Хабр!

Публикуем вторую часть серии статей о создании современного блога на Nuxt.js. Сегодня реализуем темную тему в приложении, которое мы написали вместе с вами в первой части.

Обратите внимание, что код каждой части можно найти в собственной ветке на Github, а в master доступна версия приложения из последней опубликованной статьи.



Что такое темная тема?


Темная тема — это цветовая схема любого интерфейса, которая отображает светлый текст и элементы интерфейса на темном фоне, что упрощает просмотр экрана на мобильных телефонах, планшетах и компьютерах при плохой освещенности. Темная тема уменьшает свет, излучаемый экраном, при сохранении минимального соотношения цветового контраста, необходимого для удобочитаемости.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments0

Швеция: что ждать от релокейта к суровым северянам

Reading time16 min
Views54K

Стокгольм по праву называют скандинавской Силиконовой долиной. 

Cюда стоит ехать за работой в прогрессивных компаниях, которые являются лидерами отрасли: Spotify, Klarna, Erisson, Skype, Minecraft и др. Предлагаем вдохновиться карьерными перспективами и посмотреть рассказ Александра Любоженко об опыте переезда в Стокгольм и работе в Spotify.

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

Что ждет разработчика после переезда? Говорим про перспективы для IT-специалиста, структуру расходов и особенности релокейта. 

Читать про релкоейт в Швецию
Total votes 43: ↑34 and ↓9+25
Comments324

Релокейт-обзор: 10 стран для переезда ИТ-специалиста

Reading time10 min
Views101K


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

И все равно регулярно получаем просьбы написать о той или иной стране. Именно поэтому мы решили собрать в одном месте сводный обзор топовых направлений для релокейта ИТ-специалистов.

Примечание: текст получился длинным, в нем много ссылок, в том числе на наши подробные статьи по каждой стране. Так что устраивайтесь поудобнее, поехали!
Читать дальше →
Total votes 32: ↑19 and ↓13+6
Comments32

Information

Rating
Does not participate
Location
Грузия
Date of birth
Registered
Activity

Specialization

Frontend Developer, Fullstack Developer
Senior
NextJS
TypeScript
React
HTML
CSS
Adaptive layout
Web development
JavaScript
Node.js
GraphQL