React.js для новичков в программировании: что это, как устроен и зачем нужен

🧠 Какие знания нужны разработчику на React

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

Специалисты этого направления востребованы на рынке труда. Работодатели ждут от них различные навыки и умения. Список основных из них:

  1. Умение работать в команде.
  2. Знание JavaScript.
  3. Знание паттернов.
  4. Навыки HTML/CSS верстки.
  5. Использование React и его API.
  6. Работа с DOM.
  7. Функциональное программирование.
  8. Компонентный подход.
  9. Знание английский языка.

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

На особом счету те, кто никогда не останавливается на достигнутых результатах и склонен к саморазвитию и обучению.

Пробуем React¶

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

Онлайн-песочницы

Если вы просто хотите немного поиграть с React, попробуйте онлайн-песочницу. Например, вот простейший шаблон на CodeSandbox или .

Если вы предпочитаете работать в своём редакторе, скачайте тестовый HTML-файл, добавьте в него код и запустите на своём компьютере. При открытии тестового файла браузер преобразует JSX в обычный код на JavaScript. Такое преобразование достаточно медленно, поэтому мы рекомендуем использовать этот файл только для простых демонстрационных примеров.

Добавляем React на сайт

Вы можете добавить React на свой сайт буквально за одну минуту. После этого можно разместить на сайте несколько динамических виджетов и постепенно наращивать использование React в своём проекте.

Создаём React-приложение

Когда вы начинаете проект на React, то простая HTML-страница со script-тегами может быть лучшим вариантом. Её можно сделать за минуту.

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

Частые ошибки в изучении React

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

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

Помимо самой библиотеки, специалист должен владеть такими технологиями, как HTML, CSS, JavaScript, npm, Git, Babel, WebPack, Redux. Также могут пригодиться навыки работы с другими инструментами, но это уже зависит от вакансии.

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

По поводу TDD

Вообще, я не использую TDD при написании React-компонентов. Во время работы над компонентом, я часто “перетряхиваю” его структуру, пытаясь написать как можно более простые HTML и CSS, которые выглядят правильно в любом из поддерживаемых мной браузеров. А поскольку мой подход к модульному тестированию компонентов, как правило, завязан на их структуру, то мне придется постоянно чинить тесты, что будет пустой тратой времени.

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

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

8. Используйте JSX, ES6, Babel, Webpack и NPM (или Yarn)

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

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

В довершение ко всему, мы используем Webpack для сборки нашего кода, и NPM для управления зависимостями. И теперь мы полностью соответствуем новомодным трендам в JavaScript :)

(Прим. пер.: сейчас рекомендуется использовать yarn вместо NPM, по ряду причин)

9. Используйте dev tools для React и Redux

Говоря о сопутствующем инструментарии, у React и Redux есть достаточно крутые инструменты разработчика. React dev tools дает возможность проинспектировать отрендеренное дерево компонентов, что чрезвычайно полезно, когда необходимо увидеть что же в конечном итоге получилось в браузере. Redux dev tools гораздо более выразительны и позволяют увидеть каждое произошедшее действие, изменение состояния, которое оно вызвало, и даже дает возможность перемещаться назад во времени! Вы можете добавить его как dev-зависимость, или как браузерное расширение.

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

10. Бонус от переводчика. Используйте React Create App

react-create-app это утилита командной строки, которая дает возможность создать пустое приложение с базовой структурой директорий, встроенным и настроенным Webpack, Babel и Eslint, со всеми зависимостями. Вам остается только запустить его командой и сфокусироваться на коде и бизнес-логике вашего приложения, не погружаясь в дебри настройки окружения. Если же вдруг потребуется изменить стандартную конфигурацию, то и такая возможность есть (команда ).

Заключение

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

Спасибо за внимание!

Наличие состояния затрудняет тестирование компонентов

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

Отличие Preact от React

Этим вопросом озадачиваются все React разработчики. React – это устоявшаяся и популярная библиотека, которая весит около 45кб. Так зачем кому-то разрабатывать на Preact?

Размер файла

Для начала, размер файлов разительно отлчичается. 3кб Preact против 45кб React. Это потому, что Preact не включает в себя каждую функцию React, чтобы оставаться небольших размеров.

class против className

При использовании React, если вы хотите добавить класс к div элементу, то вам придется написать нечто подобное:

# React code
<div className="class-here">Content Here</div>

В Preact вы просто можете использовать class для CSS классов. className также поддерживается.

# Preact code
<div class="class-here">Content Here</div>

render( )

В Preact this.props и this.state переходят в render(). Что это означает? Посмотрите на пример ниже.

// Preact code
class SomeClassName extends Component {
    constructor () {
        super();
        this.state = {
            message: ''
        };
    }
    render(props, state) {
      return (
        <div>
            <p>{state.message}</p>
        </div>
      )
    }
}

// React code
class SomeClassName extends Component {
    constructor () {
        super();
        this.state = {
            message: ''
        };
    }
    render() {
      return (
        <div>
            <p>{this.state.message}</p>
        </div>
      )
    }
}

Как видите, мы можем делать код чище убирая this, если вам хочется пойти еще дальше, то вы можете использовать деструкцию. Например:

class SomeClassName extends Component {
    constructor () {
        super();
        this.state = {
            message: ''
        };
    }
    render(props, {message}) {
      return (
        <div>
            <p>{message}</p>
        </div>
      )
    }
}

Отсутствие PropTypes

Не все используют PropTypes, так что их нет в Preact. Если они вам все-таки понадобились, то вы можете добавить их вручную с помощью preact-compat.

Какие нужны навыки

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

Веб-технологии. Минимум, который необходим любому фронтенд-разработчику: JavaScript, HTML, CSS, Sass или Less, Webpack. React-разработчику обязательны нужно знать как управлять состоянием компонента с помощью Redux и тестировать компонент с помощью Enzyme

Фреймворки. Знание дополнительных фреймворков помогает или увеличить количество задач (а значит и зарплату) на текущем месте работы, или найти новую, так как будет доступно больше вакансий. Список фреймворков: Angular, Vue, Svelte.

Дополнительные библиотеки.

  • Управление состоянием: Redux, MobX, RxJS.
  • Роутинг: React Router.
  • Стилизация: CSS Modules, styled-components
  • Работа со времене: date-fns
  • Запросы к серверу: axios.

Тестирование приложений. В больших компаниях есть отдельные команды тестировщиков, но в начале карьеры в небольших студиях разработчик может быть сам себе тестировщиком. Чтобы успешно проверять свой код, нужно знать React Testing Library, Mocha, Jest, Karma, VCS, понимать, что такое Unit-тесты и владеть методологией TDD.

Базы данных. Общее понимание баз данных поможет налаживать взаимодействие с бэкендом. Самые популярные (и нужные реакт-разработчику): MySQL, NoSQL (например, MongoDB), PostgreSQL, Redis

Не обязательно все, но важно иметь хотя бы общее представление

Системы контроля версий. Инструменты, в которых обязательно ведётся работа в любой команде программистов. На выбор: GitHub, GitLab, Bitbucket, Subversion.

Облачные платформы. Многие компании переносят сайты (особенно, если нагрузка большая) на облачные сервисы, поэтому хорошо иметь представление о работе и этих систем. Среди популярных: Amazon AWS, Microsoft Azure, OpenStack Apache, Google Cloud Platform.

Управление проектами. Списки задачи и найденные ошибки удобнее всего вести в специальных программах — таск-трекерах и баг-трекерах

Поэтому важно представлять, как работают Jira, Basecamp, Trello, Asana или ClickUp. Они построены на одних и тех же принципах, поэтому достаточно знать, как в целом устроены такие системы

💼 Чем занимается React-разработчик

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

У React много возможностей. Он способен воплотить практически любые пожелания заказчика.

  1. Работу можно разбивать на части.
  2. В базе можно найти причину возникшей ошибки.
  3. Коды React совместимы с другими кодами.
  4. API стабилен и работоспособен.
  5. Создает абстракции.
  6. Можно собрать разные элементы, которые писали в других программах, объединить и успешно запустить в работу.
  7. React Native используется для создания приложений для смартфонов.
  8. Есть функция визуализации DOM.
  9. В фреймворке могут работать специалисты разного уровня подготовки.
  10. Процесс работы комфортно настроен для разработчиков.

Специальность пользуется постоянным спросом в IT-компаниях. Работы для React Developer много. Инструмент помогает браузеру считать информацию и корректно ее отобразить для зашедшего на сайт человека. HTML структурирует данные для того, чтобы ее правильно прочитал браузер, а потом – пользователь.

Стили CSS формируют внешний вид документа, который написали на HTML. Для создания сайтов используют оба эти языка верстки.

Где лучше всего использовать React.js

На основе библиотеки React.js можно создавать самые разнообразные типы мобильных приложений и сайтов. Вот несколько интересных идей.

Социальные сети

React.js подходит для создания социальных платформ: Twitter, Facebook, Instagram используют многие возможности этой библиотеки. React.js упрощает разработку функций для размещения текстовых и мультимедийных материалов. Создание новостных лент и трансляций, реализацию комментариев, лайков и системы аутентификации пользователей.

Электронная коммерция

Гигант онлайн-ретейла Amazon использует React.js. Данная библиотека позволяет разрабатывать надежные и многофункциональные системы управления продажами в онлайн-магазине, подходящие для площадок с огромным трафиком. Возможности React.js применяются в популярном мобильном приложении UberEats для заказа и доставки еды.

Развлечения

Среди развлекательных платформ, использующих React.js, можно упомянуть сервисы Netflix, YouTube, TikTok и Spotify. Функциональность этой библиотеки позволяет создавать интерактивные развлекательные веб-сервисы и мобильные приложения с опциями социальной сети – комментариями, лайками, подписками, рейтингами.

Мессенджеры

Функции библиотеки React.js, помимо Whatsapp, используются в мессенджерах Viber и Facebook Messenger. На основе библиотеки React Native можно создать систему технической поддержки пользователей, работающую в реальном времени – на сайте компании или в мобильном приложении.

Планировщики задач

Библиотека React.js отлично подходит для разработки приложений, связанных с управлением проектами и личным временем, хранением заметок, распределением задач, совместной работой. На основе React.js среди прочих работают приложения Todoist, Notion, Things.

Вариант 2: Установите библиотеку, используя npm install -S и import библиотеку в соответствующие файлы проекта.

Терминал

App.jsx

Каков правильный подход?

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

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

Если в конце всего этого у вас будет сбойный код:

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

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

В примерах в этом ответе предполагается, что среда выполнения — это браузер, поэтому используется . Если вы создаете сценарий оболочки или используете response-native, это будет и т. Д.

Установка компонентов

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

Bootstrap — популярный набор инструментов для стилизации пользовательского интерфейса в HTML и CSS. Установим его вместе с , который предоставляет компоненты React для :

Импортируем стили из в начале файла:

Далее импортируем из компоненты, которые мы хотим использовать. Их можно найти на сайте react-bootstrap:

Заменим теги в компоненте , чтобы вывести компоненты :

Теперь наше приложение выглядит привлекательнее, но будет здорово, если мы добавим что-то от себя. Для этого установим :

Выберите подходящее оформление на сайте bootswatch и установите его, заменив . В нашем примере мы используем тему

Окончательный вид нашего приложения:

Окончательный вариант .

Рабочее место логиста

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

10 стартмани

Спецификации приложения

Зона отдыха в одном из коворкингов

Возможность входа в систему, выхода из неё и сброса пароля

Обратите внимание на то, что все учётные записи пользователей создают администраторы и приложение не поддерживает регистрацию в системе. Поэтому если вы решите это приложение скачать, то поработать с ним у вас не получится.
Просмотр и редактирование профиля пользователя: имя, адрес электронной почты, пароль, аватарка.
Поддержка push-уведомлений.
Раздел Home, с помощью которого пользователь может ознакомиться с новостями компании в целом, и, в частности, с новостями, касающимися коворкинга, арендуемого компанией.
Раздел Community, с помощью которого пользователь может просматривать сведения о различных коворкингах, связываться с их менеджерами и видеть, какие компании занимают некий коворкинг.
Раздел Conference, с помощью которого можно бронировать переговорные комнаты и управлять бронированием.
Раздел Selection, в котором пользователь может найти эксклюзивные скидки и предложения.
Сначала нужно создать iOS-версию, потом добавить поддержку Android.
Веб-приложение для администратора, которое позволяет управлять сведениями, выводимыми в React Native-приложении

Хотя тут я, в основном, буду говорить о том, что касается фронтенд-разработки, полагаю, уместно будет упомянуть о том, что серверная часть приложения для администратора создана на базе Ruby on Rails, Postgres и Heroku.

Первая версия приложения

Интеграция с плагинами DOM Manipulation

Реакция не знает об изменениях, внесенных в DOM за пределами Реагирования. Он определяет обновления, основанные на собственном внутреннем представлении, и если одни и те же узлы DOM управляются другой библиотекой, React запутывается и не имеет возможности восстановить.

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

Самый простой способ избежать конфликтов — предотвратить обновление компонента React. Вы можете сделать это путем рендеринга элементов, в которых React не имеет никаких причин для обновления, например, пустой <div />.

Вклад React.js

Библиотека React.js, впервые представленная в 2013 году, используется для создания динамических веб и мобильных приложений. React.js предусматривает создание независимых повторно используемых компонентов, что значительно повышает производительность приложений. Эта библиотека использует концепцию виртуального DOM – имитационного способа представления структурного документа с помощью объектов.

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

Как устроена интерактивная часть статьи

Основная часть статьи — это просто HTML-код, который залит внутрь React-приложения. Иногда внутри этого текста встречаются вот такие заклинания:

Перед нами — вызов компонентов Figure и Grid. За них отвечают файлы Grid.js и Figure.js — в них описаны правила, как именно браузеру следует использовать эти параметры, чтобы нарисовать анимацию и подписи к ней.

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

Что это нам даёт:

  • Сложная логика движка симуляций прописана где-то в отдельном месте, её не нужно дублировать. Если мы захотим поменять общий принцип работы симулятора, мы это сделаем в файлах Grid.js и Figure.js, не сломав саму статью.
  • Внутри статьи мы прописываем только существенные изменения в поведении симуляции: например, какого размера будет симуляция, с какой скоростью будет протекать, как люди будут заражаться.
  • Нам очень легко добавлять в статью новые симуляции с любыми параметрами.
  • Код получается элегантным и простым, хотя само приложение довольно сложное.

Навигация

  • У проекта react-navigation имеется примерно 15000 звёзд на GitHub и 86 нерешённых проблем. Он полностью основан на JavaScript и отличается наиболее подробной документацией среди виденных мной решений для навигации.
  • Библиотека react-native-navigation набрала около 10000 звёзд, у неё оказалось 162 нерешённых проблемы. В ней, однако, используется не только JavaScript. Для работы с ней нужно редактировать нативные файлы.
  • Репозиторий react-router является обладателем примерно 35000 звёзд и списка из 55 нерешённых проблем на GitHub. Правда, эти показатели нельзя напрямую сравнивать с другими описываемыми тут проектами, так как в данный репозиторий входят пакеты, предназначенные не только для React Native, но и для React.
  • Проект native-navigation имеет около 3000 звёзд и 55 нерешённых проблем. Тому, кто собирается его изучить и использовать, стоит учитывать то, что он всё ещё находится в состоянии бета-версии, то, что в нём используется не только JavaScript, и то, что его поддержкой занимается Airbnb (эта компания решила отказаться от React Native).

DrawerNavigator из react-navigation в действииИтоговое дерево навигации первой версии приложенияTabNavigator, заголовокПрокрутка в TabNavigator и StackNavigatorСравнение TabNavigator из react-navigation с react-native-swiper (обратите внимание на разницу в анимации золотистых линий, находящихся ниже названий вкладок)

  • Есть множество хорошо документированных решений, предназначенных для организации навигации в React Native-приложениях, среди которых я выбрал react-navigation. Оно наилучшим образом удовлетворяет моим нуждам.
  • Библиотека react-navigation значительно упрощает начало работы над проектом в том случае, если разработчик не особенно много знает о том, как работают системы навигации мобильных платформ.
  • Библиотека react-navigation имеет некоторые особенности, которые не отличаются интуитивной понятностью (по крайней мере для веб-разработчика), но в ней нет ничего такого, чего нельзя бы обойти, пусть и не самым эффективным образом.
Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Люкс-хост
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: