Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Разработка веб-приложений GraphQL с React, Node.js и Neo4j

Покупка
Артикул: 817239.01.99
Эта книга научит вас создавать графовые веб-приложения с использованием технологии GraphQL, преимущества которой усиливают такие графовые инструменты и хранилища данных, как React, Apollo и Neo4j. Вначале вы познакомитесь с GraphQL и собственно с понятием графов, затем сосредо точитесь на разработке клиентского приложения с использованием React и, наконец, создадите и развернете в облаке полноценное веб-приложение, поддерживающее поиск, аутентификацию и многое другое. Издание предназначено для веб-разработчиков полного цикла, заинтересованных в технологии GraphQL и имеющих базовое представление о Node.js API и особенностях клиентских приложений на JavaScript, использующих этот API. Опыт работы с GraphQL или графовыми базами данных не обязателен.
Лион, У. Разработка веб-приложений GraphQL с React, Node.js и Neo4j : практическое руководство / У. Лион ; пер. с англ. А. Н. Киселева. - Москва : ДМК Пресс, 2023. - 262 с. - ISBN 978-5-93700-185-6. - Текст : электронный. - URL: https://znanium.com/catalog/product/2109522 (дата обращения: 08.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Уильям Лион

Разработка  
веб-приложений GraphQL
с React, Node.js и Neo4j
M A N N I N G
SHELTER ISLAND

Full Stack
GraphQL Applications

with REACT, NODE.JS, and NEO4J

William Lyon
Москва, 2023

Разработка  
веб-приложений GraphQL

с React, Node.js и Neo4j

Уильям Лион
УДК   004.04
ББК   32.372
 Л60

Л60    Уильям Лион
Разработка веб-приложений GraphQL с React, Node.js и Neo4j / пер. с англ. 
А. Н. Киселева. – М.: ДМК Пресс, 2023. – 262 с.: ил.

            ISBN 978-5-93700-185-6

Эта книга научит вас создавать графовые веб-приложения с использованием 
технологии GraphQL, преимущества которой усиливают такие гра-
фовые инструменты и хранилища данных, как React, Apollo и Neo4j. Вначале 
вы познакомитесь с GraphQL и собственно с понятием графов, затем 
сосредо точитесь на разработке клиентского приложения с использованием 
React и, наконец, создадите и развернете в облаке полноценное веб-приложение, 
поддерживающее поиск, аутентификацию и многое другое. 
Издание предназначено для веб-разработчиков полного цикла, заинтересованных 
в технологии GraphQL и имеющих базовое представление о 
Node.js API и особенностях клиентских приложений на JavaScript, использующих 
этот API. Опыт работы с GraphQL или графовыми базами данных 
не обязателен.

   Copyright © DMK Press 2022. Authorized translation of the English edition © 2022 Manning 
Publications. This translation is published and sold by permission of Manning Publications, the 
owner of all rights to publish and sell the same.

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

ISBN 978-1-61729-703-8 (англ.) 
  Copyright © 2022 by Manning Publications Co.
ISBN 978-5-93700-185-6 (рус.)   
 © Оформление, перевод на русский язык, 

   издание, ДМК Пресс, 2023
Оглавление

Предисловие от издательства .......................................................................10
Вступление ........................................................................................................11
Благодарности ..................................................................................................12
О книге ...............................................................................................................13

Кому адресована эта книга ............................................................................13
Организация книги.........................................................................................13
О примерах программного кода ....................................................................14
Требования к программному обеспечению .................................................14
Живое обсуждение книги ...............................................................................15
Другие онлайн-ресурсы .................................................................................15

Об авторе ..........................................................................................................16
Об иллюстрации на обложке .........................................................................16

Часть I. Введение в стек GraphQL ..................................................................17

Глава 1. Что такое стек GraphQL? ..................................................................18

1.1. Обзор стека GraphQL ................................................................................18
1.2. GraphQL .....................................................................................................20

1.2.1. Определения типов в GraphQL .................................................................. 20
1.2.2. Запросы GraphQL ........................................................................................ 22
1.2.3. Преимущества GraphQL ............................................................................. 25
1.2.4. Недостатки GraphQL ................................................................................... 27
1.2.5. Инструменты GraphQL ............................................................................... 28

1.3. React ..........................................................................................................30

1.3.1. Компоненты React ...................................................................................... 31
1.3.2. JSX ................................................................................................................ 31
1.3.3. Инструменты React..................................................................................... 31

1.4. Apollo .........................................................................................................33

1.4.1. Apollo Server ................................................................................................ 33
1.4.2. Apolo Client ................................................................................................. 33

1.5. База данных Neo4j ....................................................................................33

1.5.1. Графовая модель свойств ........................................................................... 34
1.5.2. Язык запросов Cypher ................................................................................ 34
1.5.3. Инструменты Neo4j .................................................................................... 35

1.6. Как все это сочетается ..............................................................................38

1.6.1. React и Apollo Client: выполнение запроса............................................... 38
1.6.2. Apollo Server и серверная часть GraphQL .................................................. 39
1.6.3. React и Apollo Client: обработка ответа .................................................... 41
 Оглавление

1.7. Что мы будем строить в этой книге ........................................................42
1.8. Упражнения ..............................................................................................42
Итоги................................................................................................................43

Глава 2. Графовое мышление с GraphQL ......................................................44

2.1. Данные приложения – это граф ..............................................................44
2.2. Графы в GraphQL ......................................................................................46

2.2.1. Моделирование API с применением определений типов:  
разработка на основе GraphQL ................................................................... 46

2.2.2. Выборка данных с помощью функций разрешения ................................ 53
2.2.3. Наша первая функция разрешения ........................................................... 54

2.3. Объединение определений типов и функций разрешения  
в Apollo Server ............................................................................................57
2.3.1. Apollo Server ................................................................................................ 57
2.3.2. Apollo Studio ................................................................................................ 57
2.3.3. Реализация функций разрешения ............................................................ 59
2.3.4. Выполнение запросов с помощью Apollo Studio ...................................... 62

2.4. Упражнения ..............................................................................................63
Итоги................................................................................................................63

Глава 3. Графы в базе данных ........................................................................64

3.1. Обзор Neo4j ...............................................................................................64
3.2. Моделирование графовых данных в Neo4j ............................................65

3.2.1. Графовая модель свойств ........................................................................... 66
3.2.2. Ограничения базы данных и индексы ...................................................... 69

3.3. Вопросы моделирования данных ...........................................................69

3.3.1. Узел и свойство ........................................................................................... 69
3.3.2. Узел и отношение ....................................................................................... 70
3.3.3. Индексы ...................................................................................................... 70
3.3.4. Специфика типов отношений ................................................................... 70
3.3.5. Выбор направления отношений ................................................................ 70

3.4. Инструменты: Neo4j Desktop ...................................................................70
3.5. Инструменты: Neo4j Browser ...................................................................71
3.6. Cypher ........................................................................................................72

3.6.1. Сопоставление с образцом ........................................................................ 72
3.6.2. Свойства ...................................................................................................... 72
3.6.3. CREATE ........................................................................................................ 73
3.6.4. MERGE ......................................................................................................... 76
3.6.5. Определение ограничений на Cypher ....................................................... 77
3.6.6. MATCH ......................................................................................................... 78
3.6.7. Агрегаты ...................................................................................................... 79

3.7. Использование клиентских драйверов Neo4j .........................................79
3.8. Упражнения ..............................................................................................80
Итоги................................................................................................................80
Оглавление  7

Глава 4. Библиотека Neo4j GraphQL ..............................................................81

4.1. Распространенные проблемы GraphQL ..................................................82

4.1.1. Низкая производительность и проблема n + 1 запросов ......................... 82
4.1.2. Типовой код и продуктивность разработчиков ....................................... 82

4.2. Введение в средства интеграции GraphQL с базой данных ..................83
4.3. Библиотека Neo4j GraphQL ......................................................................83

4.3.1. Настройка проекта ..................................................................................... 84
4.3.2. Генерирование схемы GraphQL из определений типов ........................... 88

4.4. Основы запросов GraphQL .......................................................................90
4.5. Упорядочение и разбиение на страницы ...............................................93
4.6. Вложенные запросы .................................................................................94
4.7. Фильтрация ...............................................................................................95

4.7.1. Аргумент where ........................................................................................... 95
4.7.2. Вложенные фильтры ................................................................................... 96
4.7.3. Логические операторы: AND, OR ............................................................... 97
4.7.4. Фильтрация выборки .................................................................................. 98

4.8. Работа с датой/временем .......................................................................100

4.8.1. Использование типа Date в запросах ...................................................... 100
4.8.2. Фильтры по полям с типами Date и DateTime ........................................ 101

4.9. Работа с пространственными данными ............................................... 102

4.9.1. Выборка данных типа Point ..................................................................... 102
4.9.2. Фильтрация по расстояниям ................................................................... 103

4.10. Добавление своей логики в GraphQL API ............................................ 104

4.10.1. Директива @cypher ................................................................................ 104
4.10.2. Реализация собственных функций разрешения .................................. 108

4.11. Определение схемы GraphQL в существующей базе данных ............ 110
4.12. Упражнения ..........................................................................................111
Итоги..............................................................................................................112

Часть II. Создание пользовательского интерфейса ..................................113

Глава 5. Создание пользовательского интерфейса  
с помощью React ............................................................................................114

5.1. Обзор React .............................................................................................115

5.1.1. JSX и элементы React ................................................................................ 115
5.1.2. Компоненты React .................................................................................... 116
5.1.3. Иерархия компонентов ............................................................................ 117

5.2. Create React App ......................................................................................117

5.2.1. Создание приложения React с помощью Create React App .................... 117

5.3. Состояние и подключаемые обработчики React Hooks ....................... 124
5.4. Упражнения ............................................................................................128
Итоги..............................................................................................................128
 Оглавление

Глава 6. Клиент GraphQL ...............................................................................130

6.1. Apollo Client ............................................................................................131

6.1.1. Добавление Apollo Client в приложение React ....................................... 131
6.1.2. Обработчики Apollo Client ....................................................................... 134
6.1.3. Переменные GraphQL............................................................................... 138
6.1.4. Фрагменты GraphQL ................................................................................. 139
6.1.5. Кеширование в Apollo Client ................................................................... 141

6.2. Мутации GraphQL ...................................................................................143

6.2.1. Создание узлов ......................................................................................... 143
6.2.2. Создание отношений ............................................................................... 145
6.2.3. Изменение и удаление ............................................................................. 146

6.3. Управление состоянием клиента с помощью GraphQL ....................... 147

6.3.1. Локальные поля и реактивные переменные .......................................... 147

6.4. Упражнения ............................................................................................151
Итоги..............................................................................................................152

Часть III. Задачи разработки полного цикла .............................................153

Глава 7. Добавление авторизации и аутентификации .............................154

7.1. Авторизация в GraphQL: простейший подход ...................................... 155
7.2. Веб-токены JSON Web Token ..................................................................158
7.3. Директива схемы @auth ........................................................................162

7.3.1. Правила и операции ................................................................................. 163
7.3.2. Правило авторизации isAuthenticated .................................................... 164
7.3.3. Правило авторизации roles ...................................................................... 165
7.3.4 Правило авторизации allow ...................................................................... 168
7.3.5. Правило авторизации where .................................................................... 169
7.3.6. Правило авторизации bind ....................................................................... 171

7.4. Auth0: JWT как услуга .............................................................................172

7.4.1. Настройка Auth0 ....................................................................................... 172
7.4.2. Auth0 React ................................................................................................ 175

7.5. Упражнения.............................................................................................186
Итоги..............................................................................................................186

Глава 8. Развертывание приложения GraphQL .........................................187

8.1. Развертывание приложения GraphQL .................................................. 187

8.1.1. Преимущества развертывания в бессерверном окружении ................. 188
8.1.2. Недостатки развертывания в бессерверном окружении ....................... 189
8.1.3. Обзор подхода к развертыванию приложения GraphQL  
в бессерверном окружении ....................................................................... 189

8.2. База данных Neo4j Aura как услуга ....................................................... 190

8.2.1. Создание кластера Neo4j Aura ................................................................. 191
8.2.2. Подключение к кластеру Neo4j Aura ....................................................... 193
Оглавление  9

8.2.3. Выгрузка данных в Neo4j Aura ................................................................. 196
8.2.4. Исследование графа с помощью Neo4j Bloom ........................................ 198

8.3. Развертывание приложения React с помощью Netlify Build ............... 201

8.3.1. Добавление сайта в Netlify ....................................................................... 202
8.3.2. Настройка переменных окружения для сборок Netlify ......................... 210
8.3.3. Предварительное развертывание в Netlify ............................................. 213

8.4. Развертывание GraphQL в виде бессерверной функции  
с помощью AWS Lambda и Netlify Functions .......................................... 216
8.4.1. GraphQL API в виде бессерверной функции ........................................... 216
8.4.2. dev: интерфейс командной строки Netlify ............................................. 218
8.4.3. Преобразование GraphQL API в функцию Netlify .................................. 219
8.4.4. Добавление собственного домена в Netlify ............................................ 222

8.5. Наш подход к развертыванию ...............................................................224
8.6. Упражнения ............................................................................................225
Итоги..............................................................................................................225

Глава 9. Продвинутые возможности GraphQL ...........................................227

9.1. Абстрактные типы GraphQL ..................................................................227

9.1.1. Интерфейсы .............................................................................................. 228
9.1.2. Объединения ............................................................................................ 229
9.1.3. Использование абстрактных типов  
с библиотекой Neo4j GraphQL .................................................................. 230

9.2. Разбиение на страницы с помощью GraphQL ...................................... 242

9.2.1. Разбиение на страницы по смещению ................................................... 243
9.2.2. Разбиение на страницы с помощью курсора ......................................... 244

9.3. Свойства отношений.............................................................................. 248

9.3.1. Интерфейсы и директива @relationship ................................................ 249
9.3.2. Создание свойств отношений ................................................................. 250

9.4. В заключение ..........................................................................................251
9.5. Упражнения ............................................................................................252
Итоги..............................................................................................................253

Предметный указатель .................................................................................254
Предисловие от издательства

Отзывы и пожелания

Мы всегда рады отзывам наших читателей. Расскажите нам, что вы думаете об 
этой книге – что понравилось или, может быть, не понравилось. Отзывы важны 
для нас, чтобы выпускать книги, которые будут для вас максимально полезны.
Вы можете написать отзыв прямо на нашем сайте www.dmkpress.com, зайдя на 
страницу книги, и оставить комментарий в разделе «Отзывы и рецензии». Также 
можно послать письмо главному редактору по адресу dmkpress@gmail.com, при 
этом напишите название книги в теме письма.
Если есть тема, в которой вы квалифицированы, и вы заинтересованы в написании 
новой книги, заполните форму на нашем сайте по адресу http://dmkpress.
com/authors/publish_book/ или напишите в издательство по ад ресу dmkpress@
gmail.com.

Список опечаток

Хотя мы приняли все возможные меры для того, чтобы удостовериться в качестве 
наших текстов, ошибки все равно случаются. Если вы найдете ошибку в 
одной из наших книг – возможно, ошибку в тексте или в коде, – мы будем очень 
благодарны, если вы сообщите нам о ней. Сделав это, вы избавите других читателей 
от расстройств и поможете нам улучшить последующие версии этой книги.
Если вы найдете какие-либо ошибки в коде, пожалуйста, сообщите о них главному 
редактору по адресу dmkpress@gmail.com, и мы исправим это в следую щих 
тиражах.

Нарушение авторских прав

Пиратство в интернете по-прежнему остается насущной проблемой. Издательства «
ДМК Пресс» и Manning Publications Co. очень серьезно относятся к вопросам 
защиты авторских прав и лицензирования. Если вы столкнетесь в интернете 
с незаконно выполненной копией любой нашей книги, пожалуйста, сообщите нам 
адрес копии или веб-сайта, чтобы мы могли применить санкции.
Пожалуйста, свяжитесь с нами по адресу электронной почты dmkpress@gmail.
com со ссылкой на подозрительные материалы.
Мы высоко ценим любую помощь по защите наших авторов, помогающую предоставлять 
вам качественные материалы.
Вступление

Благодарим вас за выбор «Разработка веб-приложения GraphQL с React, Node.js 
и Neo4j». Цель этой книги – показать, как можно использовать GraphQL, React, 
Apollo и базу данных Neo4j (так называемый стек GRAND) для создания сложных 
приложений, интенсивно применяющих данные. Возможно, вам интересно, почему 
мы выбрали именно эту комбинацию технологий. Я надеюсь, что в процессе 
чтения вы оцените продуктивность, производительность и интуитивно понятные 
преимущества использования графовой модели данных на всем протяжении – от 
базы данных до API и в коде, выбирающем данные на стороне клиента.
Я мечтал найти такую книгу, когда, будучи молодым инженером, получил работу 
в небольшом стартапе, занимающемся созданием полнофункционального 
веб-приложения. Мы потратили месяцы на оценку стека технологий и изучение 
способов их комбинирования друг с другом. В конце концов мы приступили к работе 
с применением технологий, которые нас устраивали, но на их выбор потребовалось 
много итераций.
GraphQL – это технология, коренным образом изменившая подходы к разработке 
веб-приложений. Эта книга посвящена GraphQL; однако одного лишь понимания, 
как создавать серверы и писать операции GraphQL, недостаточно для реализации 
приложений полного цикла. Нужно также подумать о том, как организовать 
выборку данных из GraphQL и управление состоянием внешнего приложения, как 
защитить API, как развернуть приложение, и учесть массу других соображений. 
Вот почему эта книга не только о GraphQL; она рассказывает об использовании 
GraphQL в целом, показывая, как разные части сочетаются друг с другом. Если 
перед вами стоит задача создать приложение полного цикла с использованием 
GraphQL, то эта книга для вас!
Благодарности

Работа над книгой – длительный процесс, требующий помощи и поддержки многих 
людей. Невозможно отметить всех, кто помог в создании этой книги, не упустив 
никого. Конечно, эта книга была бы невозможна без всех участвовавших в 
создании удивительных технологий, о которых мы рассказываем.
Спасибо Майклу Стивенсу (Michael Stephens) за предложение написать книгу о 
GraphQL и помощь в развитии идеи полного стека GraphQL, Карен Миллер (Karen 
Miller) за рецензирование ранних версий каждой главы, а также всем сотрудникам 
издательства Manning, принявшим участие в проекте: Дугу (Doug), Александару 
(Aleksandar), Энди (Andy), Кристиану (Christian), Мелоди (Melody), Ниеку (Niek), 
Гордану (Gordan) и Марии (Marija). Спасибо моей семье, что терпели меня во время 
работы над этой книгой. Особое спасибо сообществу за помощь в проверке 
идей, изложенных в этой книге, а также за подробные отзывы и вклад в развитие 
библиотеки Neo4j GraphQL.
Дорогие мои рецензенты: Андрес Сакко (Andres Sacco), Брендон Фрайер 
(Brandon Friar), Кристофер Хаупт (Christopher Haupt), Дамиан Эстебан (Damian 
Esteban), Данило Зекович (Danilo Zekovic), Дениз Вехби (Deniz Vehbi), Ферит Топку 
(Ferit Topcu), Франс Оилинки (Frans Oilinki), Густаво Гомес (Gustavo Gomes), Харш 
Раваль (Harsh Raval), Иво Санчес Чека Кросато (Ivo Sánchez Checa Crosato), Хосе 
Антонио Эрнандес Ороско (Jose Antonio Hernandez Orozco), Хосе Сан Леандро (Jose 
San Leandro), Кевин Реди (Kevin Ready), Константинос Леймонис (Konstantinos 
Leimonis), Кшиштоф Камычек (Krzysztof Kamyczek), Микеле Аддуци (Michele 
Adduci), Мигель Исидоро (Miguel Isidoro), Ричард Мейнсен (Richard Meinsen), 
Ричард Воган (Richard Vaughan), Роб Лейси (Rob Lacey), Рональд Борман (Ronald 
Borman), Райан Хубер (Ryan Huber), Сейт Кумар Саху (Satej Kumar Sahu), Симеон 
Лейзерзон (Simeon Leyzerzon), Стефан Туральски (Stefan Turalski), Таня Вилке (
Tanya Wilke), Теофанис Деспоудис (Theofanis Despoudis) и Владимир Пасман 
(Vladimir Pasman), спасибо вам! Ваши предложения помогли сделать эту книгу 
лучше.
О книге

Цель книги «Разработка веб-приложения GraphQL с React, Node.js и Neo4j» – показать, 
как разные части стека GraphQL сочетаются друг с другом в полномасштабных 
приложениях и как разработчики могут использовать онлайн-службы 
для поддержки разработки и развертывания. С этой целью в каждой главе будут 
представляться новые идеи и понятия и применяться для создания и развертывания 
полномасштабного приложения.

Кому адресована эта книга

Эта книга предназначена для веб-разработчиков полного цикла, заинтересованных 
в технологии GraphQL и имеющих хотя бы базовый уровень понимания Node.
js API и особенностей клиентских приложений на JavaScript, использующих этот 
API. Прочитав эту книгу, читатель получит базовое представление о Node.js и клиентском 
JavaScript, но, что особенно важно, приобретет мотивацию для освоения 
приемов создания служб и приложений с использованием GraphQL.

Организация книги

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

 
 в главе 1 обсуждаются компоненты полномасштабных приложений 
GraphQL, включая введение во все конкретные технологии, используемые 
в этой книге (GraphQL, React, Apollo и база данных Neo4j);
 
 глава 2 знакомит с GraphQL и основами создания GraphQL API (определения 
типов и функции распознавания);
 
 глава 3 знакомит с графовой базой данных Neo4j, моделью графа свойств и 
языком запросов Cypher;
 
 глава 4 демонстрирует возможности GraphQL при работе с графовой базой 
данных Neo4j посредством библиотеки Neo4j GraphQL.

Во второй части мы сосредоточимся на разработке клиентского приложения с 
использованием React:

 
 глава 5 знакомит с инфраструктурой библиотеки React и концепциями ее 
применения, которые пригодятся, когда мы приступим к созданию примера 
клиентского приложения;
 
 глава 6 показывает, как организовать выборку данных и управление состоянием 
клиента с помощью React и GraphQL при работе с GraphQL API, созданным 
в предыдущих главах.
 Окниге

В третьей части мы займемся защитой приложения и его развертыванием с 
использованием облачных служб:

 
 глава 7 показывает, как защитить приложение, используя GraphQL и Auth0;
 
 глава 8 знакомит с облачными службами, обычно используемыми для развертывания 
баз данных, GraphQL API и приложений React;
 
 глава 9 завершает книгу обсуждением абстрактных типов в GraphQL, разбиением 
наборов данных на страницы с помощью курсоров и обработки 
свойств отношений в GraphQL.

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


О примерах программного кода

Эта книга также содержит множество примеров программного кода как в пронумерованных 
листингах, так и в виде включений в обычный текст. В обоих случаях 
исходный код оформлен шрифтом фиксированной ширины, чтобы вам было проще отличать 
его от основного текста. Иногда вам будет встречаться код, оформленный 
жирным моноширинным шрифтом, чтобы выделить изменившиеся фрагменты, по сравнению 
с предыдущими шагами, например когда в существующую строку кода добавляется 
что-то новое.
Во многих случаях исходный код переформатирован, чтобы уместить его по 
ширине книжной страницы. В частности, мы добавили разрывы строк и отступы. 
В редких случаях даже этого было недостаточно, и мы добавили маркеры продолжения 
строки (➥). Кроме того, мы удалили комментарии из листингов, которые 
подробно описываются в тексте. Многие листинги сопровождаются дополнительными 
примечаниями, описывающими важные понятия.
Получить выполняемые фрагменты кода можно из электронной версии книги 
по адресу https://livebook.manning.com/book/fullstack-graphql-applications. Все примеры, что 
приводятся в книге, доступны для загрузки на веб-сайте издательства Manning 
(www.manning.com) и в репозитории GitHub по адресу https://github.com/johnymontana/full-
stack-graphql-book.

Требования к программному обеспечению

Для следования за примерами в книге необходимо установить последнюю версию 
Node.js. Все примеры я опробовал с версией v16. По своему опыту рекомендую 
использовать инструмент nvm для установки и управления версиями Node.js. Инструкции 
по установке и использованию nvm можно найти по адресу https://github.
com/nvm-sh/nvm.
Мы также будем применять несколько (бесплатных) онлайн-служб для развертывания. 
Доступ к большинству из них можно получить с помощью учетной запи-
Другиеонлайн-ресурсы  15

си GitHub, поэтому обязательно зарегистрируйтесь на GitHub (https://github.com/), 
если вы этого еще не сделали.

Живое обсуждение книги

Приобретая книгу «Разработка веб-приложения GraphQL с React, Node.js и Neo4j», 
вы получаете бесплатный доступ к онлайн-платформе liveBook для чтения книг 
издательства Manning. Благодаря эксклюзивным возможностям этой платформы 
вы можете оставлять свои комментарии к книге как в целом, так и к определенным 
разделам или абзацам, добавлять заметки для себя, задавать технические 
вопросы и отвечать на них, а также получать помощь от автора и других пользователей. 
Чтобы получить доступ к форуму и зарегистрироваться на нем, откройте 
в веб-браузере страницу https://livebook.manning.com/book/fullstack-graphql-applications/
discussion. Узнать больше о форумах Manning и познакомиться с правилами поведения 
можно по адресу https://livebook.manning.com/discussion.
Издательство Manning обязуется предоставить своим читателям место встречи, 
где может состояться содержательный диалог между отдельными читателями 
и между читателями и автором. Но со стороны авторов отсутствуют какие-либо 
обязательства уделять форуму какое-то определенное внимание – их присутствие 
на форуме остается добровольным (и неоплачиваемым). Мы предлагаем задавать 
авторам стимулирующие вопросы, чтобы их интерес не угасал! Форум и архив 
с предыдущими обсуждениями остаются доступны на сайте издательства, пока 
книга продолжает издаваться.

Другие онлайн-ресурсы

Вам обязательно пригодится документация к библиотеке Neo4j GraphQL, доступная 
по адресу https://neo4j.com/docs/graphql-manual/current/. В числе других полезных 
онлайн-ресурсов можно назвать бесплатные онлайн-курсы на GraphAcademy 
(https://graphacademy.neo4j.com/), сайт сообщества Neo4j (https://community.neo4j.com/).