GraphQL terdiri dari sistem tipe, bahasa query dan semantik eksekusi, validasi statis, dan introspeksi tipe, masing-masing diuraikan di bawah ini. Untuk memandu Anda melalui masing-masing komponen ini, kami telah menulis contoh yang dirancang untuk menggambarkan berbagai potongan GraphQL.
- https://github.com/facebook/graphql
Falcor memungkinkan Anda mewakili semua sumber data jarak jauh Anda sebagai model domain tunggal melalui grafik JSON virtual. Kode Anda dengan cara yang sama di mana pun data berada, apakah dalam memori pada klien atau melalui jaringan pada server.
- http://netflix.github.io/falcor/
Apa perbedaan antara Falcor dan GraphQL (dalam konteks Relay)?
Jawaban:
Saya telah melihat Angular Air Episode 26: FalcorJS dan Angular 2 di mana Jafar Husain menjawab bagaimana GraphQL dibandingkan dengan FalcorJS . Ini adalah ringkasan (parafrase):
genres[0..10]
. Tapi itu tidak mendukung permintaan terbuka, misgenres[0..*]
.Jafar berpendapat bahwa di sebagian besar aplikasi, tipe kueri yang pergi dari klien ke server memiliki bentuk yang sama. Oleh karena itu, memiliki operasi yang spesifik dan dapat diprediksi seperti get and set memaparkan lebih banyak peluang untuk meningkatkan cache. Selain itu, banyak pengembang yang terbiasa dengan pemetaan permintaan menggunakan router sederhana dalam arsitektur REST.
Diskusi akhir memutuskan apakah kekuatan yang datang dengan GraphQL melebihi kompleksitas.
sumber
Saya sekarang telah menulis aplikasi dengan kedua perpustakaan dan saya bisa setuju dengan semua yang ada di pos Gajus, tetapi menemukan beberapa hal berbeda yang paling penting dalam penggunaan kerangka kerja saya sendiri.
sumber
Lee Byron salah satu insinyur di belakang GraphQL melakukan AMA di hashnode , inilah jawabannya ketika ditanya pertanyaan ini:
Sunting: Falcor memang dapat mengelompokkan permintaan , membuat komentar tentang penggunaan jaringan tidak akurat. Terima kasih kepada @PrzeoR
sumber
UPDATE: Saya telah menemukan komentar yang sangat berguna di bawah posting saya yang ingin saya bagikan dengan Anda sebagai pelengkap untuk konten utama:
Mengenai kurangnya contoh, Anda dapat menemukan repo pengguna falcorjs yang mengagumkan, ada beberapa contoh penggunaan CRUD Falcor: https://github.com/przeor/awesome-falcorjs ... Hal kedua, ada buku berjudul " Menguasai Pengembangan Penuh Stack React "yang mencakup Falcor juga (cara yang baik untuk belajar bagaimana menggunakannya):
POST ORGINAL DI BAWAH INI:
FalcorJS ( https://www.facebook.com/groups/falcorjs/ ) jauh lebih sederhana untuk menjadi efisien dibandingkan dengan Relay / GraphQL.
Kurva pembelajaran untuk GraphQL + Relay adalah BESAR:
Dalam ringkasan singkat saya: Go for Falcor. Gunakan Falcor dalam proyek Anda berikutnya sampai ANDA memiliki anggaran besar dan banyak waktu belajar untuk tim Anda kemudian gunakan RELAY + GRAPHQL.
GraphQL + Relay memiliki API yang sangat besar sehingga Anda harus efisien. Falcor memiliki API kecil dan sangat mudah untuk dipahami oleh pengembang front-end yang akrab dengan JSON.
Jika Anda memiliki proyek AGILE dengan sumber daya terbatas -> maka pergilah untuk FalcorJS!
SUBYEKTIFKU pendapat: FalcorJS adalah 500% + lebih mudah untuk efisien dalam javascript full-stack.
Saya juga telah menerbitkan beberapa kit starter FalcorJS pada proyek saya (+ lebih banyak contoh proyek falcor dengan tumpukan penuh): https://www.github.com/przeor
Untuk lebih detail teknis:
1) Ketika Anda menggunakan Falcor, maka Anda dapat menggunakan keduanya di front-end dan backend:
mengimpor falcor dari 'falcor';
dan kemudian membangun model Anda berdasarkan.
... Anda juga memerlukan dua perpustakaan yang mudah digunakan di backend: a) falcor-express - Anda menggunakannya sekali (mis. app.use ('/ model.json', FalcorServer.dataSourceRoute (() => NamesRouter baru) ())) ). Sumber: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/index.js
b) falcor-router - di sana Anda menentukan rute SIMPLE (mis. rute: '_view.length' ). Sumber: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/router.js
Falcor adalah sepotong kue dalam hal kurva belajar.
Anda juga dapat melihat dokumentasi yang jauh lebih sederhana dari lib FB dan periksa juga artikel " mengapa Anda harus peduli tentang falcorjs (netflix falcor) ".
2) Relay / GraphQL lebih cenderung seperti alat perusahaan besar.
Misalnya, Anda memiliki dua dokumentasi berbeda yang dibicarakan secara terpisah:
a) Relay: https://facebook.github.io/relay/docs/tutorial.html - Kontainer - Rute - Kontainer Root - Status Siap - Mutasi - Lapisan Jaringan - Plugin Babel Relay - GRAPHQL
REFERENSI API
Menyampaikan
INTERFASI
RelayNetworkLayer
b) GrapQL: https://facebook.github.io/graphql/
Itu pilihanmu:
Falcor JS VERSUS yang manis dan pendek dan terdokumentasi Alat kelas perusahaan besar dengan dokumentasi panjang dan canggih sebagai GraphQL & Relay
Seperti yang saya katakan sebelumnya, jika Anda adalah dev front-end yang memahami ide menggunakan JSON, maka implementasi grafik JSON dari tim Falcor adalah cara terbaik untuk melakukan proyek dev full-stack Anda.
sumber
Singkatnya, Falcor atau GraphQL atau Restful memecahkan masalah yang sama - menyediakan alat untuk kueri / memanipulasi data secara efektif.
Perbedaannya terletak pada cara mereka menyajikan data:
Setiap kali kita perlu menyediakan data untuk pengguna, kita berakhir dengan sesuatu yang disukai: client -> query -> {a layer menerjemahkan permintaan ke dalam operasi data} -> data.
Setelah berjuang dengan GraphQL, Falcor dan JSON API (dan bahkan ODdata), saya menulis layer kueri data saya sendiri . Ini lebih sederhana, lebih mudah dipelajari, dan lebih setara dengan GraphQL.
Lihat di:
https://github.com/giapnguyen74/nextql
Ini juga terintegrasi dengan featherjs untuk permintaan / mutasi waktu nyata. https://github.com/giapnguyen74/nextql-feathers
sumber
OK, baru mulai dari perbedaan sederhana namun penting, GraphQL adalah query berbasis sementara Falcor tidak!
Tetapi bagaimana mereka membantu Anda?
Pada dasarnya, mereka berdua membantu kami mengelola dan meminta data, tetapi GraphQL memiliki Model req / res dan mengembalikan data sebagai JSON , pada dasarnya ide dalam GraphQL memiliki satu permintaan untuk mendapatkan semua data Anda dalam satu tujuan ... Juga, memiliki respons yang tepat dengan permintaan yang tepat, Jadi sesuatu untuk dijalankan di internet dan perangkat seluler berkecepatan rendah, seperti jaringan 3G ... Jadi jika Anda memiliki banyak pengguna seluler atau karena beberapa alasan Anda ingin memiliki lebih sedikit permintaan dan respons yang lebih cepat , gunakan GraphQL ... Sementara Facor tidak terlalu jauh dari ini, jadi baca terus ...
Di sisi lain, Falcor oleh Netflix, biasanya memiliki permintaan tambahan (biasanya lebih dari satu kali) untuk mengambil semua data Anda, walaupun mereka berusaha memperbaikinya menjadi satu syarat ... Falcor lebih terbatas untuk kueri dan tidak memiliki pra pembantu kueri yang ditentukan seperti rentang dan lain-lain ...
Tetapi untuk klarifikasi lebih lanjut, mari kita lihat bagaimana masing-masing dari mereka memperkenalkan diri:
sumber