Обновить
24.95

ReactJS *

JavaScript-библиотека для создания интерфейсов

Сначала показывать
Порог рейтинга
Уровень сложности

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

Время на прочтение4 мин
Охват и читатели15K

image


Если вкратце


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


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


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


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


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

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

Метаморфоза тестирования redux-saga

Время на прочтение5 мин
Охват и читатели10K
Фреймворк redux-saga предоставляет кучу интересных паттернов для работы с сайд-эффектами, но, как истинные кроваво-энтерпрайзные разработчики, мы должны покрывать весь свой код тестами. Давайте разберёмся, как мы будем тестировать наши саги.


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

Архитектура веб-интерфейсов: деревянное прошлое, странное настоящее и светлое будущее

Время на прочтение14 мин
Охват и читатели12K
image

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

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

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

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

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

Что такое стек MERN, и как с ним работать?

Время на прочтение8 мин
Охват и читатели48K
Привет, Хабр!

Давным-давно мы выпускали пилотный проект о стеке MEAN (Mongo, Express, Angular, Node), который нас в целом не разочаровал, однако, допечаток и обновлений мы в свое время решили не делать — в отличие от издательства Manning, которое эту книгу обновило. Тем не менее, мы продолжаем поиски в данном направлении и сегодня хотели бы поговорить с вами о родственном стеке MERN, где на клиенте располагается не Angular, а React. Слово предоставляется Тиму Смиту.


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

Разработка приложения для потокового вещания с помощью Node.js и React

Время на прочтение21 мин
Охват и читатели58K
Автор материала, перевод которого мы сегодня публикуем, говорит, что работает над приложением, которое позволяет организовывать потоковое вещание (стриминг) того, что происходит на рабочем столе пользователя.

image

Приложение принимает от стримера поток в формате RTMP и преобразует его в HLS-поток, который может быть воспроизведён в браузерах зрителей. В этой статье будет рассказано о том, как можно создать собственное стриминговое приложение с использованием Node.js и React. Если вы привыкли, увидев заинтересовавшую вас идею, сразу же погружаться в код, можете прямо сейчас заглянуть в этот репозиторий.
Читать дальше →

Как мы сломали старую хибару и построили на ее месте небоскреб

Время на прочтение9 мин
Охват и читатели4.6K
Зураб Белый, руководитель группы, практика Java, рассказывает свою историю работы в проекте для одной крупной компании и делится накопленным опытом.

Как я заселился…


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

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

Зачем писать свой React Data Grid в 2019

Время на прочтение9 мин
Охват и читатели12K

Привет, Хабр! Я участвую в разработке ECM системы. И в небольшом цикле статей хочу поделится нашим опытом и историей разработки своего React Data Grid (далее просто грид), а именно:


  • почему мы отказались от готовых компонент
  • с какими проблемами и задачами мы столкнули при разработке своего грида
  • какой профит дает разработка своего грида

Предыстория


У нашей системы есть веб-приложение, в котором пользователи работают со списками документов, результатами поисков, справочниками. Причем, списки могут быть как маленькие (10 сотрудников), так и очень большие (50 000 контрагентов). Для отображения этих списков мы разработали свой грид:


image

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

11 советов для тех, кто использует Redux при разработке React-приложений

Время на прочтение13 мин
Охват и читатели20K
Когда речь идёт о разработке React-приложений, то, в плане архитектуры кода, маленькие проекты часто бывают более гибкими, чем большие. Нет ничего плохого в том, чтобы создавать такие проекты с использованием практических рекомендаций, нацеленных на более крупные приложения. Но всё это, в случае с маленькими проектами, может оказаться попросту ненужным. Чем меньше приложение — тем «снисходительнее» оно относится к использованию в нём простых решений, возможно — неоптимальных, но не требующих больших затрат времени на их реализацию.



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

Tic Tac Toe, часть 0: Сравнение Svelte и React

Время на прочтение4 мин
Охват и читатели10K
Tic Tac Toe, часть 0: Сравнение Svelte и React
Tic Tac Toe, часть 1: Svelte и Canvas 2D
Tic Tac Toe, часть 2: Undo/Redo с хранением состояний
Tic Tac Toe, часть 3: Undo/Redo с хранением команд
Tic Tac Toe, часть 4: Взаимодействие с бэкендом на Flask с помощью HTTP

На сайте React'a есть туториал, в котором описывается разработка игры Tic Tac Toe. Я решил повторить разработку этой игры на Svelte. Статья охватывает только первую половину туториала, до реализации истории ходов. Для целей ознакомления с фреймворком этого вполне достаточно. Каждый раздел статьи соответствует разделу туториала, содержит ссылки на исходный код обоих фреймворков.

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

Анонс новой версии Styled Components v5: Звериный оскал

Время на прочтение3 мин
Охват и читатели5.4K


Мы очень рады анонсировать новую пятую версию styled-components! Новая версия полностью обратно совместима с предыдущей при условии использования React^16.8.


Бету пятой версии можно попробовать уже сейчас:


npm install styled-components@beta

Нужна версия React, поддерживающая React.hooks, т.е. react@^16.8 react-dom@^16.8 react-is@^16.8


А теперь об изменениях!


Быстро. Еще Быстрее. Styled-Components.


Когда больше чем 2 года назад мы выпустили вторую версию, мы обещали фокусироваться на производительности. Мы уже сильно ускорили работу библиотеки в течение нескольких релизов. Так, мы получили десятикратное увеличение скорости в версии 3.1 и еще 25% ускорение в версии 4.


К пятой версии, библиотека styled-components стала еще быстрее! Сравнивая с 4 версией, мы получили:


  • на 19% меньший размер минифицированного кода (16.2kB vs. 13.63kB min+gzip) ️
  • на 18% быстрее инициализация на клиентской стороне
  • на 17% быстрее обновление динамических стилей
  • на 45% (!!!) быстрее серверный рендеринг
Читать дальше →

История четырёхкратного ускорения React-приложения

Время на прочтение6 мин
Охват и читатели16K
Почти 60% посетителей сайта покидают его в том случае, если его загрузка занимает более 3 секунд. 80% таких посетителей на сайт уже не возвращается. Это говорит о том, что успех веб-проекта не в последнюю очередь зависит от его скорости. Автор материала, перевод которого мы сегодня публикуем, хочет рассказать о методиках повышения производительности React-приложений.


Результаты оптимизации приложения
Читать дальше →

Использование Typescript с React – руководство для новичков

Время на прочтение6 мин
Охват и читатели197K
Друзья, в преддверии выходных хотим поделиться с вами еще одной интересной публикацией, которую хотим приурочить к запуску новой группы по курсу «Разработчик JavaScript».



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

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

И если вы застряли на чем-то, помните, что вы всегда можете типизировать что- нибудь как any. Any – ваш новый друг. А теперь перейдем непосредственно к примерам.
Читать дальше →

Делаем таблицу с бесконечной прокруткой без event listener

Время на прочтение2 мин
Охват и читатели9.4K

Что ж оно так лагает-то?



Если при рендеринге огромной таблицы с какой-нибудь transition анимацией не делать ничего дополнительно, то приложение будет лагать, а пользователь страдать.


И что же делать?

Ближайшие события

Подготовка к захвату мира

Время на прочтение6 мин
Охват и читатели7.1K

Спрашивается, о чём мой проект? А я сам не знаю. Планы меняются. Идей много. Но всегда есть общий базовый функционал. Вот я пока про это. Уже 5 месяцев. После весеннего обострения, в приступе одиночества, хочу поделиться некоторыми наработками.


Весеннее обострение

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

Возможно ли без Redux?

Время на прочтение3 мин
Охват и читатели9.3K
На сегодняшний день можно найти уйму позиций, где требуется react/redux. React прекрасен, вопросов нет. Вопрос к Redux — возможно ли без него. Если погуглить чуть-чуть, найдется добротная статья на Хабре, где автор задается таким же вопросом. В статье на простом примере (todoList) метод this.updateViews() вызывается слишком часто (семь-восемь раз) и кажется, что можно сделать проще.

Основная идея тут observable models, react отвечает за observable, дело осталось за малым — создать model.

Перед созданием модели пару слов о дизайне (архитектуре) клиента:

index — raw data
history — array[model]
observer — model
view — errors, focus, flags

index.jsx — точка входа программы для экрана пользователя. Index отрисовывает все компоненты с данными по умолчанию, делает асинхронные запросы, перерисовывает компоненты с новыми данными.

// index.jsx

<History>
  <Observer>
     <HeaderView />
     <MainView />
  </Observer>
</History>
Читать дальше →

Генерация приложения на React с бэкэндом на GraphQL за считанные минуты

Время на прочтение1 мин
Охват и читатели4.5K
Мы добавили новую экспериментальную возможность в 8base CLI (Command Line Interface), которая генерирует готовое приложение на React из вашей модели данных. Это очень удобно для начала работы с GraphQL и React, а также для быстрого создания пользовательского интерфейса приложения. Похоже на скаффолдинг в Ruby-on-Rails.

Созданное приложение основано на Create React App, использует Apollo Client для GraphQL запросов, включает в себя аутентификацию на основе Auth0, а также возможность загрузки файлов.
Читать дальше →

Управление стейтом с помощью React Hooks – без Redux и Context API

Время на прочтение7 мин
Охват и читатели31K
Всем привет! Меня зовут Артур, я работаю ВКонтакте в команде мобильного веба, занимаюсь проектом VKUI — библиотекой React-компонентов, с помощью которой написаны некоторые наши интерфейсы в мобильных приложениях. Вопрос работы с глобальным стейтом у нас пока открыт. Существует несколько известных подходов: Redux, MobX, Context API. Недавно я наткнулся на статью André Gardi State Management with React Hooks — No Redux or Context API, в которой автор предлагает использовать React Hooks для управления стейтом приложения.

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

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

Uibook — инструмент для визуального тестирования React-компонентов с медиа-запросами

Время на прочтение6 мин
Охват и читатели7.5K


Всем привет! Меня зовут Виталий Ризо, я фронтенд-разработчик в «Амплифере». Мы сделали Uibook — простой инструмент для визуального тестирования React-компонентов с реальными медиа-запросами. Расскажу, как он работает и чем может быть полезен вам.

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

Конференция React Russia 2019 уже 1 июня

Время на прочтение2 мин
Охват и читатели3.6K
Друзья, вот и снова настала весна! Прекрасная летняя погода всё ближе. Продуктивные будни принесли новые результаты, а это значит, что пора снова встретиться!

В этом году мы подготовили что-то особенное. На этот раз мы встречаемся не просто вечером в будний день на митап (мини-конференцию), а на весь день и в субботу. Да, всё верно. Мы начинаем то, что обещали ещё в прошлом году. Встречайте!

React Russia 2019 – это конференция профессиональных разработчиков, использующих React.js и React Native в России. Являясь логическим продолжением всех наших конференций-митапов React Moscow и React SPB , проводимых с 2016 года при поддержке крупнейших компаний на рынке, мы встречаемся, чтобы поделиться идеями, представить и рассказать о новых решениях и технологиях, поделиться опытом и в совместном общении сделать нашу работу ещё более продуктивной, приятной и эффективной.

Когда и где


1 июня 2019 г. в 10:00
Москва, Кутузовский проспект 32к1, Сбербанк Agile Home

Программа


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

Запрос к API c React Hooks, HOC или Render Prop

Время на прочтение8 мин
Охват и читатели41K


Рассмотрим реализацию запроса данных к API c помощью нового друга React Hooks и старых добрых товарищей Render Prop и HOC (Higher Order Component). Выясним, действительно ли новый друг лучше старых двух.

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

Вклад авторов