Сегментированный рассказ о моем пути обучения GraphQL.

Первое взаимодействие

Ссылка начало работы на первой странице GraphQL ведет на страницу обучения. Я впервые изучаю GraphQL и чувствую себя потерянным. Прочитав темы на странице обучения, я задался вопросом, как использовать GraphQL. Чему эта страница пытается научить меня? Какая часть GraphQL находится на этой странице? Есть ли еще инструменты GraphQL? Какой инструмент GraphQL мне следует использовать? У меня было много вопросов и не было ответов.

Затраченное время: ~2 часа.

Второе взаимодействие

Анализ проблем обучения проходил примерно так:

  1. GraphQL — это клиент-серверный инструмент.
  2. Клиенту GraphQL нужен сервер GraphQL.
  3. Я не могу использовать клиент без сервера, поэтому я должен начать с сервера.
  4. Предлагает ли документация GraphQL список инструментов? Делают, удобно.
  5. Хм, сервер GraphQL Apollo должен стать хорошим началом.
  6. Документация сервера Apollo выглядит хорошо. Я скоро буду на ногах.
  7. После первой страницы у меня был работающий сервер GraphQL.

Некоторые вещи, которые я пробовал:

  • Изменить запрос.
  • Добавьте переменную.
  • Почитайте про кеширование.
  • Мутации.

Затраченное время: 2 дня

День 1: ~1 час.

День 2: ~10 часов (включая перерывы и другие мероприятия).

Выводы второго тура:

  • Многоязычная поддержка GraphQL.
  • Многослойная тема и относительно крутая кривая обучения.
  • Легко войти, но трудно освоить.

Третье взаимодействие

Ситуация накаляется. Я хочу использовать typescript, поэтому я настроил nodemon и ts-node. Прошло пять минут, и машинописный сервер заработал. Прошло пятнадцать минут, и я смотрю на объявления типов. Наползает фича, и я хочу использовать схему. Первым нововведением стал машинописный текст. Схема не сработала, и я читаю документацию по аполлону. Сорок пять минут, ничего не работает. Я теряю время. Сервер javascript работал, и мне не понадобился машинописный текст или схема. Восстановил настройку на javascript и снова запустил сервер. Я дал обещание сделать минимально жизнеспособный продукт. Борьба с фича-крипами продолжается.

Я пытаюсь создать схему GQL для Apollo, не работает. Откройте документы Аполлона, но не много о схеме. TypeDefs и Resolvers есть везде, но подходят ли они?

Я открываю документацию GQL, чтобы узнать, как создать схему. Не повезло. Подождите, это странно. Документы для создания схемы — это не те, которые я использовал в первый раз. Хм, а почему больше одной документации? В чем их отличие? Я открыл старую документацию, и в ней использовался экспресс-сервер GraphQL. Более одной документации об одном и том же. Эти документы об одном и том же? Они описывают это по-разному, и я разобрался. Многослойность:

  • Схема GraphQL.
  • Резольверы.
  • Мы можем записать схему в файл с расширением .gql.

Боже мой…

Единственная тема, с которой у меня больше проблем, это C++. Вчера я пытался выяснить, как работает наследование классов C++. Почему перед родительским классом стоит ключевое слово public? Существует три режима наследования классов: частный, защищенный и открытый. Наследование класса по умолчанию приватное, но им нужен был публичный. Мне потребовалось полчаса исследований, чтобы понять это.

Страница, на которой я узнал о наследовании C++: https://www.section.io/engineering-education/extending-classes/.

Заключительные слова

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

Репозиторий

На момент написания идет работа над GraphQL. Если есть ветка с названием graphql-checkout, откройте ее. В каталоге экспериментов находится папка graphql-checkout.

Моя работа находится в этом репозитории.