Сегментированный рассказ о моем пути обучения GraphQL.
Первое взаимодействие
Ссылка начало работы на первой странице GraphQL ведет на страницу обучения. Я впервые изучаю GraphQL и чувствую себя потерянным. Прочитав темы на странице обучения, я задался вопросом, как использовать GraphQL. Чему эта страница пытается научить меня? Какая часть GraphQL находится на этой странице? Есть ли еще инструменты GraphQL? Какой инструмент GraphQL мне следует использовать? У меня было много вопросов и не было ответов.
Затраченное время: ~2 часа.
Второе взаимодействие
Анализ проблем обучения проходил примерно так:
- GraphQL — это клиент-серверный инструмент.
- Клиенту GraphQL нужен сервер GraphQL.
- Я не могу использовать клиент без сервера, поэтому я должен начать с сервера.
- Предлагает ли документация GraphQL список инструментов? Делают, удобно.
- Хм, сервер GraphQL Apollo должен стать хорошим началом.
- Документация сервера Apollo выглядит хорошо. Я скоро буду на ногах.
- После первой страницы у меня был работающий сервер 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.
Моя работа находится в этом репозитории.