Обновить
68.83

ReactJS *

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

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

Перевод первой части учебника Patterns.dev

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

Привет! Меня зовут Айнур, и я frontend-разработчик SimbirSoft. Более 6 лет я работаю над коммерческими проектами, создаю и улучшаю интерфейсы, поэтому в работе достаточно часто использую паттерны проектирования. Неоднократно я обращался за идеями и лайфхаками к книге Patterns.dev, которая содержит очень современный взгляд на шаблоны проектирования, рендеринга и производительности JavaScript.

Авторы Patterns.dev:

Лидия Холли — штатный консультант и преподаватель по разработке программного обеспечения, которая в основном работает с JavaScript, React, Node, GraphQL. Она также занимается наставничеством и проводит личные тренинги.

Эдди Османи — технический менеджер, работающий над Google Chrome. Его команды работают над такими проектами, как Lighthouse, PageSpeed ​​Insights, Chrome User Experience Report и другими.

Материал книги будет полезен не только React-разработчикам, но и всем, кто так или иначе интересуется или сталкивается с frontend-разработкой.

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

Источник: https://www.patterns.dev/
Данный адаптированный материал распространяется на условиях лицензии Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)

Читать далее

Работаем с таблицами с помощью React Table

Уровень сложностиСложный
Время на прочтение24 мин
Охват и читатели59K


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


В этом туториале я покажу вам несколько полезных приемов по работе с таблицами с помощью React Table.


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


Мы последовательно реализуем 5 вариантов таблицы:


  • с возможностью сортировки строк;
  • с возможностью фильтрации строк;
  • с пагинацией;
  • с возможностью выбора строк;
  • комплексную.

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


Предполагается, что вы имеете некоторый опыт работы с React и TypeScript.


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


Интересно? Тогда прошу под кат.

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

Работа с i18n — автоматизация Google Translate и другие полезные советы

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели23K

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

Читать далее

Хранение токена доступа в сервис-воркере

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели9.6K


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


На днях прочитал эту интересную статью, посвященную различным вариантам хранения токена доступа (access token) на клиенте. Мое внимание привлек вариант с использованием сервис-воркера (service worker) (см. "Подход 4. Использование service worker"), поскольку я даже не задумывался о таком способе применения этого интерфейса.


СВ — это посредник между клиентом и сервером (своего рода прокси-сервер), который позволяет перехватывать запросы и ответы и модифицировать их тем или иным образом. Он запускается в отдельном контексте, работает в отдельном потоке и не имеет доступа к DOM. Клиент также не имеет доступа к СВ и хранимым в нем данным. Как правило, СВ используется для обеспечения работы приложения в режиме офлайн посредством кэширования критически важных для работы приложения ресурсов.


В этой статье я покажу, как реализовать простой сервис аутентификации на основе JSONWebToken и HTTP Cookie с хранением токена доступа в сервис-воркере.


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


Интересно? Тогда прошу под кат.

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

React Spectrum — создание компонентов нового поколения

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели11K

Устали писать логику для компонентов, которая из раза в раз повторяется?

React Spectrum знает как это решить!

Читать далее

Полное руководство по Remix. Часть 1

Уровень сложностиСредний
Время на прочтение50 мин
Охват и читатели18K


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


В этой серии статей я расскажу вам о Remix — новом фреймворке для создания клиент-серверных веб-приложений на JavaScript (точнее, на React) со встроенной поддержкой TypeScript.


Remix позволяет разрабатывать так называемые PESPA (Progressive Enhancement Single Page Apps — одностраничные приложения с возможностью прогрессивного улучшения). Это означает следующее:


  • почти весь код приложения "живет" на сервере;
  • приложение остается функциональным даже при отсутствии JS;
  • JS используется только для прогрессивного улучшения UX (User Experience — пользовательский опыт).

Подробнее о PESPA и других архитектурах веб-приложений можно почитать здесь.


Очевидно, что разработчики Remix вдохновлялись Next.js и Svelte.


К слову, здесь вы найдете полное руководство по Next.js.


В первой части мы пройдемся по руководствам из официальной документации, во второй — более подробно рассмотрим возможности, предоставляемые Remix.


Это часть номер раз.


Часть номер два.

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

Вдали от Webpack, или Как мы в Dodo микрофронтенды на Vite переводили

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели15K

С первой частью рассказа о микрофронтендах в Dodo можно ознакомиться тут

Мы спокойно сидели и пилили новый проект на нашем устоявшемся стеке (React + TypeScript + Webpack + SingleSPA + SystemJS + Jest). Пока одним прекрасным утром не пришел наш техлид и такой: «Чуваки, а давайте затащим Vitest!».

Читать далее

За что мы любим Go, Ruby, React Native, ReactJS и Redux

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

Привет! Это tech-команда СберМаркет. Сегодня кто-то празднует день влюбленных, а для нас с вами это ещё и профессиональный праздник — день компьютерщика. Если совместить два повода, получим день влюблённых в компьютеры. Кто-то любит копаться в железе, кто-то в программах. Кто-то пишет библиотеки, а кто-то их использует. Но все мы не равнодушны, иначе нас бы здесь не было. Эта статья — любовное письмо языкам, фреймворкам и библиотекам, которые крутятся у нас под капотом — Go, Ruby, React, React Native, Redux.

Читать далее

Понимание архитектуры Astro островов

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

В настоящее время мы все привыкли видеть появление новых фреймворков, которые обещают произвести революцию в сфере веб-разработки. Тем не менее, чаще всего мы остаемся привязанными к конкретной библиотеке пользовательского интерфейса (React, Vue, Svelte и т.д.) для определения наших компонентов и создания пользовательского опыта.

На этот раз ситуация поменялась! Используя возможности Vite.js, мы получили Astro: агностический фреймворк, который может работать как SSG (генератор статических сайтов) и обеспечивать SSR (рендеринг на стороне сервера).

Читать далее

Управление подписками: много слов о потоках, отписках и утечке памяти

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели7.2K

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

За основу я взял библиотеку RxJs, работающую с фреймворком Angular. Однако любителям остальных фреймворков, возможно, это тоже пригодится.

Читать далее

Хуки в React — как надо, когда не надо и нужны ли свои?

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели8.6K

В 16.8 версии библиотеки React впервые появились хуки (hooks) — функции, которые упрощают работу с компонентами React и переиспользованием какой-либо логики. В экосистеме React уже есть много дефолтных хуков, но также можно создавать и свои. Я Михаил Карямин, фронтенд-разработчик в Учи.ру, расскажу, как и в каких случаях хуки в React облегчают жизнь разработчику и как с ними работать.

Читать далее

Найди себя в React

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

Хотя в IT и разработана шкала оценки программистов (Trainee, Junior, Middle, Senior, Tech Lead), с которой более или менее все согласны, единого определения каждого уровня среди работодателей пока нет. В итоге каждая компания устанавливает собственные требования к навыкам на каждом уровне.

Этот тест поможет вам прикинуть, какой бы у вас был грейд, если бы вы собеседовались в МКБ.

Пройти тест

Общие шаблоны и нюансы использования React Query

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

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

Одним из простых в реализации, но иногда сложных в использовании инструментов является react-query — мощная библиотека для асинхронного управления состоянием. Простота реализации делает его желанным выбором для написания логики состояния компонентов.

Читать далее

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

Микровселенная безумия, или Как устроены микрофронтенды в Dodo

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

«Микрофронтенды в компании, которая доставляет пиццу? Серьёзно? Зачем? Да и куда? У вас же всего лишь приложенька с каталогом и заказом товара. Какие ещё микрофронтенды?»

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

Читать далее

React, всплывающие подсказки (tooltips), для самых маленьких

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

Во множестве проектов web разработки для улучшения пользовательского опыта используются всплывающие подсказки - tooltips. В статье рассматривается создание переиспользуемого и гибко настраиваемого React компонента для отображения таких всплывающих подсказок.

К статье

Как я написал самую эффективную библиотеку для реактивного состояния

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели13K

Всем привет, меня зовут Артём Арутюнян, и я уже пять лет изучаю реактивное программирование. Меня задела недавняя статья, Big State Managers Benchmark, в которой моя библиотека Reatom заняла лишь третье место (скорее второе, ну да ладно) и я решил написать самую эффективную реализацию реактивных состояний, убрав лишние фичи, сфокусировавшись на простоте и производительности.

Немного поэкспериментировав я добился удивительных результатов, в сто строк (0.3KB gzip) уместив максимально простое апи, которое позволяет подключаться к React и Svelte без дополнительных адаптеров. Но самое главное, найденный алгоритм фундаментально покрывает любые краевые случаи условных переподписок зависимых вычислений, с которыми подавляющее большинство популярных библиотек не справляется и дают глитчи.

Если вам интересны детали реализации — прошу под кат.
Читать дальше →

Сайт, целиком написанный ChatGPT

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели76K

Да, про эту нейросеть сейчас слышно отовсюду, как она пишет текста песен, сдает экзамены, пишет куски кода, но я подумал, а сможет ли она сама целиком завершить проект под моим руководством?

Читать далее

React+Django как написать Hello World

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

Создание веб приложения на основе React и Django, с базой данных на postgress, небольшое прощупывание RabbitMQ и чуть-чуть nginx, потом объясню зачем. Ах да! Завернём все в контейнеры и заставим подниматься в три команды!

Читать далее

Яндекс Карты и React Native. Часть 2. HUD и методы карты

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

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

Читать далее

Яндекс Карты и React Native. Часть 1. Установка и примитивы

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

Yandex Maps SDK: использование в React Native-приложении

В этой статье расскажу о том, как я лично столкнулся с Yandex Maps SDK для React Native и опишу базовый инструментарий, который предоставляет эта библиотека с небольшими примерами.

Читать далее