• Главная
  • Контакты
Подписаться:
  • Twitter
  • Facebook
  • RSS
  • VK
  • PushAll
logo

logo

  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • За год
    • Положительные
    • Отрицательные
  • Сортировка
    • По дате (возр)
    • По дате (убыв)
    • По рейтингу (возр)
    • По рейтингу (убыв)
    • По комментам (возр)
    • По комментам (убыв)
    • По просмотрам (возр)
    • По просмотрам (убыв)
Главная
  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • Главная
  • Книга «React.js. Быстрый старт»

Книга «React.js. Быстрый старт» +4

24.04.2017 17:26
ph_piter 7 4100 Источник
Профессиональная литература, ReactJS*, Блог компании Издательский дом «Питер»
image Привет, Хаброжители! Ранее у нас вышла незаменимая вводная книга по технологии React для взыскательных JavaScript-разработчиков. Все самое интересное о сверхпопулярном инструменте от компании Facebook. В книге рассмотрены основные концепции высокопроизводительного программирования при помощи React, реальные примеры кода и доступные блок-схемы. Прочитав ее, вы научитесь:

• Создавать и использовать собственные компоненты React наряду с универсальными компонентами DOM.
• Писать компоненты для таблиц данных, позволяющие редактировать, сортировать таблицу, выполнять в ней поиск и экспортировать ее содержимое.
• Использовать дополнительный синтаксис JSX в качестве альтернативы для вызовов функций.
• Запускать низкоуровневый гибкий процесс сборки, который освободит вам время и поможет сосредоточиться на работе с React.
• Работать с инструментами ESLint, Flow и Jest, позволяющими проверять и тестировать код по мере разработки приложения.
• Обеспечивать коммуникацию между компонентами при помощи Flux.

О чем эта книга


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

В главе 4 дается введение в JSX — отдельную дополнительную технологию, обычно используемую в связке с React.

Далее перейдем к изучению приемов разработки реального приложения и освоению дополнительных инструментальных средств, которые могут оказать помощь в этом деле. В их числе средства для создания пакетов JavaScript (Browserify), для блочного тестирования (Jest), для проверки кода (ESLint), проверки соответствия типов (Flow), для организации потока данных в приложении (Flux) и для использования неизменяемых данных (Immutable.js). Рассмотрение дополнительных технологических средств сведено к минимуму, чтобы основное внимание уделялось React, а знакомство с этими средствами поможет осознанно выбирать их для решения ваших задач.

Отрывок из книги. Установка обязательных инструментальных средств


Прежде чем загрузить index.html и посмотреть его в работе, необходимо сделать следующее:

• создать файл bundle.css. Это простое объединение, не требующее использования обязательных инструментальных средств;
• ?сделать код понятным для браузеров. Для транспиляции вам понадобится Babel;
• ???создать файл bundle.js. Для этого воспользуемся таким средством, как Browserify.

Средство Browserify понадобится не только для объединения сценариев, но и для:
• разрешения и включения всех зависимостей. Вы просто даете ему путевое имя файла app.js, а оно затем вычисляет все зависимости (React, Logo.js и т. д.);
??• включения реализации CommonJS, чтобы работали вызовы require(). Babel превращает все инструкции import в вызовы функций require().

В общем, нужно установить Babel и Browserify. Их установка выполняется с использованием npm (Node Package Manager — диспетчер пакетов Node), инструментального средства, поставляемого вместе с программной платформой Node.js.

Node.js


Для установки Node.js перейдите по адресу http://nodejs.org и получите установщик, соответствующий вашей операционной системе. Следуйте инструкциям установщика (они помогут справиться с поставленной задачей). Теперь можно воспользоваться услугами, предоставляемыми утилитой npm.

Для проверки введите в своем терминале следующую команду:

$ npm --version

Если вы не имеете опыта работы с терминалом (командной строкой), то сейчас самое время его приобрести! Если у вас Mac OS X, щелкните на поиске Spotlight (значок которого в виде увеличительного стекла находится в верхнем правом углу) и наберите Terminal. Если у вас Windows, найдите меню Пуск (щелкните правой кнопкой мыши на значке окна в левом нижнем углу экрана), выберите пункт Выполнить и наберите powershell.

Browserify


Средство Browserify устанавливается с помощью npm путем набора в вашем терминале следующей команды:

$ npm install --global browserify

Для проверки работоспособности средства наберите следующую команду:

$ browserify --version

Babel


Для установки интерфейса командной строки Babel наберите следующую команду:

$ npm install --global babel-cli

Для проверки работоспособности наберите такую команду:

$ babel --version

Уловили суть?

React и прочие


Осталось воспользоваться еще несколькими пакетами (и все будет готово):

• react, разумеется;
??• react-dom (распространяется отдельно);
??• babel-preset-react (предоставляет Babel поддержку для JSX и других полезных опций, связанных с React);
• babel-preset-es2015 (предоставляет вам поддержку новейших возможностей JavaScript).

Для локальной установки этих пакетов сначала перейдите в каталог своего приложения (например, с помощью команды cd ~/reactbook/reactbook-boiler):

$ npm install --save-dev react
$ npm install --save-dev react-dom
$ npm install --save-dev babel-preset-react
$ npm install --save-dev babel-preset-es2015

Нужно отметить, что теперь у вашего приложения есть каталог node_modules с локальными пакетами и их зависимостями. Два глобальных модуля (Babel, Browserify) находятся в каталоге node_modules, расположенном где-то в другом месте, определяемом вашей операционной системой (например, /usr/local/lib/node_modules или C:\Users{ваше_имя}\AppData\Roaming\npm\).

Займемся сборкой


В процессе сборки выполняются три действия: объединение CSS, транспиляция JS и создание пакета JS. Это не сложнее запуска трех команд.

Транспиляция JavaScript


Сначала транспилируем код JavaScript с помощью Babel:

$ babel --presets react,es2015 js/source -d js/build

Эта команда означает, что нужно взять все файлы из каталога js/source, транспилировать их, задействовав возможности React и ES2015, и скопировать результат в js/build. Команда выведет следующую информацию:

js/source/app.js -> js/build/app.js
js/source/components/Logo.js -> js/build/components/Logo.js

Создание пакета JavaScript


Теперь настала очередь создания пакета:

$ browserify js/build/app.js -o bundle.js

Средству Browserify предписывается начать с файла app.js, учесть все зависимости и записать результат в файл bundle.js, который завершает инструкцию включения в вашем файле index.html. Чтобы проверить, что файл действительно был записан, наберите команду less bundle.js.

Создание пакета CSS


Создание пакета CSS выполняется (на данном этапе) настолько просто, что вам даже не нужно применять никаких специальных средств, следует просто объединить все CSS-файлы в один (используя команду cat). Но поскольку файл перемещается в другое место, ссылки на изображения утратят работоспособность, поэтому перепишем их с помощью вызова команды sed:

cat css/*/* css/*.css | sed 's/..\/..\/images/images/g'
> bundle.css

Об авторе


Стоян Стефанов (Stoyan Stefanov) работает инженером в компании Facebook. Ранее в компании Yahoo! он был создателем интерактивного средства оптимизации изображений smush.it, а также средства выявления проблем производительности YSlow 2.0. Стоян — автор книг JavaScript Patterns (O’Reilly, 2010) и Object-Oriented JavaScript (Packt Publishing, 2008), соавтор публикаций Even Faster Web Sites и High-Performance JavaScript, блогер и частый докладчик на многих конференциях, в числе которых Velocity, JSConf и Fronteers.

» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок

Для Хаброжителей скидка 25% по купону — React
Поделиться с друзьями
-->

Комментарии (7)


  1. vtvz_ru
    24.04.2017 20:45
    #10189194

    Разве не лучше использовать env вместо es2015 и webpack вместо всей этой ерунды (или gulp на крайний случай)? Понимаю, статья не об этом, но можно было бы дать просто рабочий сниппет, чтобы уменьшить гемор с командами.
    И насколько эта книга лучше официальной документации?


  1. MrCheater
    24.04.2017 21:04
    #10189224
    +2

    Жаль, но, похоже, книга устарела к моменту выхода.


    1) Вместо Browserify должен быть Webpack. Вместо npm — yarn
    2) Вот это просто дичь какая-то


    cat css/*/* css/*.css | sed 's/..\/..\/images/images/g'
    > bundle.css

    тут должны быть или gulp-таски, или webpack + css-loader с CSS-Modules, или Inline Styles библиотеки вроде https://github.com/zeit/styled-jsx
    3) В реальной жизни настройки лежат в конфиге. А скрипты описаны в package.json


    babel --presets react,es2015 js/source -d js/build

    4) Webpack, например, уже умеет нативные import / export


    включения реализации CommonJS, чтобы работали вызовы require(). Babel превращает все инструкции import в вызовы функций require().


    1. RidgeA
      24.04.2017 22:23
      #10189338
      +1

      Жаль, но, похоже, книга устарела к моменту выхода.

      Мне кажется, что любая книга, посвященная современному JS (а особенно какому-то популярному фреймворку) устаревает на момент своего выхода, не говоря уж о ее переводе :-)


  1. inoyakaigor
    24.04.2017 21:53
    #10189282

    Книга, к сожалению, устарела не успев выйти.
    В отрывке прямо на первой странице написано: mv ~/Downloads/react-0.14.7/
    Хотя, Реакт как был Реактом так им и останется. Просто немного лучше.


  1. ksgr
    25.04.2017 08:21
    #10189616

    Да и вообще сочетание «книга» и «быстрый старт» противоречивое.


  1. knotri
    25.04.2017 14:16
    #10190286

    Все устарело
    typescript вместо flow,
    redux или mobx вместо flux


    В главе 4 дается введение в JSX — отдельную дополнительную технологию, обычно используемую в связке с React.
    Да ну, неужели кто-то использует реакт без jsx?


  1. Zet_Roy
    26.04.2017 17:55
    #10192570
    +1

    То что оно устарело еще ничего не значит, сейчас полно вакансий по ангуляру первому.

МЕТКИ

  • Хабы
  • Теги

Профессиональная литература

ReactJS

Блог компании Издательский дом «Питер»

книги

СЕРВИСЫ
  • logo

    CloudLogs.ru - Облачное логирование

    • Храните логи вашего сервиса или приложения в облаке. Удобно просматривайте и анализируйте их.
Все публикации автора
  • Книга «jQuery в действии. 3-е издание» -4

    • 01.08.2017 10:41

    Книга «Front-end. Клиентская разработка для профессионалов. Node.js, ES6, REST» +16

    • 25.07.2017 09:25

    Книга «Предметно-ориентированное проектирование: паттерны, принципы и методы» +6

    • 19.07.2017 09:11

    Книга «Автостопом по Python» +19

    • 17.07.2017 15:10

    Книга «Машинное обучение» +20

    • 05.07.2017 15:35

    Книга «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» +1

    • 27.06.2017 12:24

    Издательство Питер. Летняя распродажа +34

    • 14.06.2017 10:02

    По дороге с облаками. Реляционные базы данных в новом технологическом контексте +8

    • 06.06.2017 13:40

    Книга «Философия DevOps. Искусство управления IT» +18

    • 16.05.2017 09:20

    Книга «ECMAScript 6 для разработчиков» +5

    • 02.05.2017 09:20

Подписка


ЛУЧШЕЕ

  • Сегодня
  • Вчера
  • Позавчера
05:16

Win32 API и ностальгия по окнам странной формы +111

08:00

Ремонт блока питания с Power Delivery. 470 граммов электроники +84

09:01

Готовимся к отключению. Эффективные форматы для упаковки и раздачи HTML-страниц +32

12:07

Как ИИ-агенты стали новым оружием скамеров на Хабр Карьере +30

07:05

Механический калькулятор. Как работает арифмометр? +25

12:00

Linux 7.0 и что изменилось в ядре после очередного цикла разработки +20

08:00

Программирование с AI-ассистентом — похороните меня под плинтусом +20

13:01

Электроинструмент становится хуже, и это делается намеренно +18

04:59

Замедление Телеграма замедлилось, а также законопроект об уголовной ответственности за крипту в РФ +18

07:21

«Великое очищение» в работе с контентом: что осталось от роли редактора +17

08:30

Что такое «мышечная память» и можно ли её развить? +14

07:00

Не просто OpenBMC: как мы сделали свой BMC +13

01:54

Нейропластичность для разработчика — как учиться эффективнее +12

11:35

Vibe++ очень простой язык для промпт-программистов. А почему бы и не да? +10

08:12

Легенды 90-х — кто придумал и производил жвачки Turbo, Love is… и TipiTip +10

09:30

ИИ-агенты в ИБ: путь к доверенному члену команды +9

09:11

Кастомная клавиатура в 2026: как спустить премию на кейкапы с жабами и не пожалеть +9

11:57

Усовершенствованная электронная подпись: как сохранить юридическую значимость сейчас и через 50 лет +8

09:25

ИИ существовал до компьютеров: Крышесносные примеры +8

07:01

Playwright vs Selenium на Java: что выбрать для автотестов в 2026 году +8

00:53

DIY: Экранчик для «умного дома» +70

09:01

Я установил все расширения Firefox +52

08:00

Код Apollo 11 выглядит лучше современного софта. Похоже, мы где-то свернули не туда +51

19:30

Умный подоконник: как ESP32 спас мой домашний огород (и что я узнал про «невидимые» пины) +43

13:01

«Управляя Солнцем»: умопомрачительная физика и смелые задачи звёздных машин +41

11:05

«Фабрика монстров» Джорджа Лукаса: как в «Звездных войнах» создавали инопланетян без компьютерной графики +35

14:05

Китайский шедевр сумрачного гения из 2000-х +28

13:59

Как ИИ-подхалимы затягивают в ИИ-психоз, или К чему приводит токсичное поддакивание +28

15:04

13 предпринимательских уроков из советской сатиры, которую вы читали не так +18

13:46

ICMP-туннель на уровне ядра Linux: передаём TCP/UDP-трафик через эхо-запросы +15

07:39

4 привычки, которые, как кажется, двигают вашу карьеру (но на самом деле ей вредят) +15

17:15

Cказ о том, как мы с Oracle на PostgreSQL переехали +14

16:05

Меньше слов, больше кода? Как опенсорс в Китае развивали — компании-инноваторы, евангелисты и выход на Гитхаб +14

11:24

Почему LLM Wiki Карпатого не стоит внедрять для личной базы знаний +14

15:45

Как я изобрёл велосипед: создание языка программирования с нуля ради одной игры и Telegram-бота +12

10:15

Приватная Cвязь на Go и Flutter +9

17:23

Сказать или не сказать — вот в чём вопрос? +8

17:23

OpenAI выкупила Sky – теперь в Codex лучшая система управления компьютером, которую я видел +8

14:00

Экс-налоговый инспектор отвечает на вопросы про проверки физических лиц +8

13:47

Контейнеры вместо серверов: Как устроена система обмена данными, которую нельзя заблокировать и подделать +8

01:12

Мыслепреступление на Android: как скрыть Перехватчик трафика от Государственных приложений +165

09:01

Юбилей легенды +88

19:15

Почему JS/TS — не функциональный язык (и почему это важно понимать) +55

13:01

Почему не взлетели дирижабли? Часть 18: «Осоавиахим репортинг!» +50

02:45

Как мы продавали компьютеры в 90-х. Шоу в нужную сторону +48

11:58

NaïveProxy в sing-box (альтернатива VLESS) +36

08:01

Благородные рыцари в космосе. Вспоминаем сериал «Светлячок» +36

14:17

Теневой рынок GitHub звезд +34

17:18

Как я стал учителем за 5 минут: BAC в электронном дневнике +29

13:26

Как я тестировал локально новый Qwen 3.6 и Gemma 4 +25

13:38

WebFlux vs Virtual Threads: что происходит при 2000 RPS +24

17:15

ИИ стирает рабочие места. Но кто тогда будет покупать? +23

18:39

Пост через 100 лет: как американцы возвращались к Луне и по дороге построили канцелярию +21

12:00

Пять мини-ПК середины весны: от производительных систем с водянкой до офисного «железа» +21

20:15

Я хотел починить стиральную машину. В итоге пришлось проектировать свой разделительный трансформатор +18

08:00

Нет, ИИ вас не заменит. Вас заменит человек, работающий с ним +17

23:32

Гармония чисел: как математика настроила музыку +15

20:45

Как я за 9 месяцев сделал свой видеосервис: сначала потому что надо было, а потом потому что понравилось +15

16:58

Clean Architecture + DDD в Go: как не превратить проект в 200 файлов ни о чём +15

09:39

Ловушка «Пари Паскаля»: как страх перед будущим ИИ отвлекает нас от проблем в настоящем +15

ОБСУЖДАЕМОЕ

  • ИИ стирает рабочие места. Но кто тогда будет покупать? +23

    • 251   18000

    Win32 API и ностальгия по окнам странной формы +111

    • 206   17000

    Я хотел починить стиральную машину. В итоге пришлось проектировать свой разделительный трансформатор +18

    • 139   17000

    Мыслепреступление на Android: как скрыть Перехватчик трафика от Государственных приложений +165

    • 135   87000

    Как я тестировал локально новый Qwen 3.6 и Gemma 4 +25

    • 76   16000

    Clean Architecture + DDD в Go: как не превратить проект в 200 файлов ни о чём +15

    • 50   9600

    Ответ Джеймса Линдси на слова Маска о безусловном доходе +6

    • 47   9000

    Почему JS/TS — не функциональный язык (и почему это важно понимать) +55

    • 42   18000

    NaïveProxy в sing-box (альтернатива VLESS) +36

    • 42   24000

    Умный подоконник: как ESP32 спас мой домашний огород (и что я узнал про «невидимые» пины) +43

    • 40   20000

    Пост через 100 лет: как американцы возвращались к Луне и по дороге построили канцелярию +21

    • 37   16000

    Теневой рынок GitHub звезд +34

    • 36   14000

    Как ИИ-подхалимы затягивают в ИИ-психоз, или К чему приводит токсичное поддакивание +29

    • 31   11000

    13 предпринимательских уроков из советской сатиры, которую вы читали не так +18

    • 30   12000

    Код Apollo 11 выглядит лучше современного софта. Похоже, мы где-то свернули не туда +51

    • 29   15000
  • Главная
  • Контакты
© 2026. Все публикации принадлежат авторам.