Kisah tersegmentasi tentang jalur pembelajaran GraphQL saya.

Interaksi pertama

Tautan "permulaan" halaman GraphQL pertama mengarah ke "halaman pembelajaran". Saya mempelajari GraphQL untuk pertama kalinya dan merasa tersesat. Setelah membaca topik di halaman pembelajaran, saya bertanya-tanya bagaimana cara menggunakan GraphQL. Apa yang ingin diajarkan halaman ini kepada saya? Bagian mana dari GraphQL yang ada di halaman ini? Apakah ada lebih banyak alat GraphQL? Alat GraphQL apa yang harus saya gunakan? Saya punya banyak pertanyaan dan tidak ada jawaban.

Waktu yang dihabiskan: ~2 jam.

Interaksi kedua

Analisis masalah pembelajaran berlangsung seperti ini:

  1. GraphQL adalah alat klien-server.
  2. Klien GraphQL memerlukan server GraphQL.
  3. Saya tidak bisa menggunakan klien tanpa server, jadi saya harus mulai dengan server.
  4. Apakah dokumentasi GraphQL menawarkan daftar alat? Benar, berguna.
  5. Hmm, server GraphQL Apollo seharusnya menjadi awal yang baik.
  6. Dokumentasi server Apollo terlihat bagus. Saya akan segera bangun dan berlari.
  7. Setelah halaman pertama, saya menjalankan server GraphQL.

Beberapa hal yang saya coba:

  • Ubah kueri.
  • Tambahkan variabel.
  • Baca tentang cache.
  • Mutasi.

Waktu yang dihabiskan: 2 hari

Hari 1: ~1 jam.

Hari 2: ~10 jam (termasuk istirahat dan aktivitas lainnya).

Kesimpulan dari putaran kedua:

  • Dukungan multi-bahasa untuk GraphQL.
  • Topik berlapis-lapis dan kurva pembelajaran yang relatif curam.
  • Mudah untuk dimasuki tetapi sulit untuk dikuasai.

Interaksi ketiga

Situasi semakin memanas. Saya ingin menggunakan skrip ketikan, jadi saya menyiapkan nodemon dan ts-node. Lima menit berlalu, dan server TypeScript berjalan. Lima belas menit berlalu, dan saya melihat deklarasi tipe. Sebuah fitur merayap masuk, dan saya ingin menggunakan skema. Fitur creep pertama adalah TypeScript. Skemanya tidak berfungsi, dan saya membaca dokumentasi apollo. Empat puluh lima menit berlalu, tidak ada yang berhasil. Saya membuang-buang waktu. Server javascript sedang berjalan, dan saya tidak memerlukan skrip atau skema. Memulihkan pengaturan ke javascript dan menjalankan server kembali. Saya berjanji untuk membuat produk minimal yang layak. Pertarungan melawan fitur creep terus berlanjut.

Saya mencoba membuat skema GQL untuk Apollo, tidak berhasil. Buka dokumen Apollo, tetapi tidak banyak tentang skemanya. TypeDefs dan Resolver ada di mana-mana, tetapi apakah itu cara yang tepat?

Saya membuka dokumentasi GQL untuk mengetahui cara membuat skema. Tidak beruntung. Tunggu, itu aneh. Dokumen untuk membuat skema bukanlah yang pertama kali saya gunakan. Hmm, kenapa dokumentasinya lebih dari satu? Apa perbedaannya? Saya membuka dokumentasi lama, dan menggunakan server ekspres GraphQL. Lebih dari satu dokumentasi tentang hal yang sama. Apakah dokumen-dokumen ini membahas hal yang sama? Mereka menggambarkannya secara berbeda, dan saya menemukan jawabannya. Hal multi-lapis:

  • Skema GraphQL.
  • Resolver.
  • Kita dapat menulis skema dalam file dengan ekstensi .gql.

Ya Tuhan…

Satu-satunya topik yang lebih banyak bermasalah dengan saya adalah C++. Kemarin saya mencoba mencari tahu bagaimana cara kerja warisan kelas C++. Mengapa ada kata kunci public di depan kelas induk? Ada tiga mode pewarisan kelas: warisan privat, terlindungi, dan publik. Warisan kelas secara default adalah privat, tetapi mereka membutuhkan publik. Saya membutuhkan waktu setengah jam untuk melakukan penelitian untuk mengetahuinya.

Halaman yang saya pelajari tentang pewarisan C++ dari: https://www.section.io/engineering-education/extending-classes/.

Kata penutup

Saya dapat dengan nyaman menulis aplikasi GraphQL tingkat pemula. Perjalanan eksperimental itu menyenangkan. Saat saya sedang mood, saya akan melihat lebih banyak di GraphQL. Konsepnya terasa seru.

Repositori

Pada saat penulisan, pekerjaan GraphQL sedang berlangsung. Jika ada cabang bernama graphql-checkout, bukalah. Di direktori eksperimen terdapat folder graphql-checkout.

Pekerjaan saya ada di repositori ini.