GraphQL składa się z systemu typów, języka zapytań i semantyki wykonywania, statycznej walidacji i introspekcji typów, każdy opisany poniżej. Aby poprowadzić Cię przez każdy z tych komponentów, napisaliśmy przykład mający na celu zilustrowanie różnych części GraphQL.
- https://github.com/facebook/graphql
Falcor umożliwia reprezentowanie wszystkich zdalnych źródeł danych jako modelu pojedynczej domeny za pośrednictwem wirtualnego wykresu JSON. Kodujesz w ten sam sposób bez względu na to, gdzie znajdują się dane, czy to w pamięci na kliencie, czy przez sieć na serwerze.
- http://netflix.github.io/falcor/
Jaka jest różnica między Falcor i GraphQL (w kontekście Relay)?
Odpowiedzi:
Ja obejrzałem odcinek Air kątowa 26: FalcorJS i kątowa 2 gdzie Jafar Husain odpowiedzi jak GraphQL porównuje do FalcorJS . Oto podsumowanie (parafrazowanie):
genres[0..10]
. Nie obsługuje jednak zapytań otwartych, npgenres[0..*]
.Jafar twierdzi, że w większości aplikacji typy zapytań przechodzących od klienta do serwera mają ten sam kształt. Dlatego posiadanie określonych i przewidywalnych operacji, takich jak pobieranie i ustawianie, zapewnia więcej możliwości wykorzystania pamięci podręcznej. Ponadto wielu programistów jest zaznajomionych z mapowaniem żądań za pomocą prostego routera w architekturze REST.
Końcowa dyskusja dotyczy tego, czy moc oferowana przez GraphQL przeważa nad złożonością.
źródło
Napisałem teraz aplikacje w obu bibliotekach i zgadzam się ze wszystkim w poście Gajusa, ale odkryłem kilka innych rzeczy, które są najważniejsze w moim własnym wykorzystaniu frameworków.
źródło
Lee Byron, jeden z inżynierów stojących za GraphQL, przeprowadził AMA na hashnode , oto jego odpowiedź na to pytanie:
Edycja: Falcor rzeczywiście może grupować żądania , przez co komentarz dotyczący wykorzystania sieci jest niedokładny. Dzięki @PrzeoR
źródło
AKTUALIZACJA: Pod moim postem znalazłem bardzo przydatny komentarz, którym chcę się z wami podzielić jako uzupełnienie głównej treści:
Jeśli chodzi o brak przykładów, repozytorium awesome-falcorjs może być przydatne, istnieją różne przykłady użycia CRUD Falcor: https://github.com/przeor/awesome-falcorjs ... Po drugie, jest książka o nazwie „ Mastering Full Stack React Development ”, który obejmuje również Falcor (dobry sposób, aby nauczyć się go używać):
ORYGINALNY POST PONIŻEJ:
FalcorJS ( https://www.facebook.com/groups/falcorjs/ ) jest znacznie prostszy w działaniu w porównaniu z Relay / GraphQL.
Krzywa uczenia się dla GraphQL + Relay jest OGROMNA:
W moim krótkim podsumowaniu: Idź po Falcor. Używaj Falcor w swoim następnym projekcie, aż będziesz mieć duży budżet i dużo czasu na naukę dla swojego zespołu, a następnie użyj RELAY + GRAPHQL.
GraphQL + Relay ma ogromne API, w którym musisz być skuteczny. Falcor ma małe API i jest bardzo łatwe do zrozumienia dla każdego programisty front-end, który zna JSON.
Jeśli masz projekt AGILE z ograniczonymi zasobami -> wybierz FalcorJS!
MOJA SUBIEKTYWNA opinia: FalcorJS jest o 500% + łatwiejszy do działania w javascript z pełnym stosem.
Opublikowałem również kilka zestawów startowych FalcorJS w moim projekcie (+ więcej przykładowych projektów full-stack Falcor): https://www.github.com/przeor
Aby uzyskać więcej szczegółów technicznych:
1) Kiedy używasz Falcor, możesz używać zarówno na front-endzie, jak i backendzie:
importować falcor z „falcor”;
a następnie zbuduj swój model na podstawie.
... potrzebujesz również dwóch bibliotek, które są proste w użyciu na zapleczu: a) falcor-express - używasz go raz (np. app.use ('/ model.json', FalcorServer.dataSourceRoute (() => nowy NamesRouter ())) ). Źródło: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/index.js
b) falcor-router - tam definiujesz PROSTE trasy (np. route: '_view.length' ). Źródło: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/router.js
Falcor to bułka z masłem, jeśli chodzi o krzywą uczenia się.
Możesz również zapoznać się z dokumentacją, która jest znacznie prostsza niż biblioteka FB, a także zapoznać się z artykułem " Dlaczego powinieneś przejmować się falcorjs (netflix falcor) ".
2) Relay / GraphQL jest bardziej prawdopodobnym narzędziem wielkiego przedsiębiorstwa.
Na przykład masz dwie różne dokumentacje, które oddzielnie mówią o:
a) Przekaźnik: https://facebook.github.io/relay/docs/tutorial.html - Kontenery - Trasy - Kontener główny - Stan gotowości - Mutacje - Warstwa sieciowa - Wtyczka Babel Relay - GRAPHQL
ODNIESIENIE DO API
Przekaźnik
INTERFEJSY
RelayNetworkLayer
b) GrapQL: https://facebook.github.io/graphql/
To Twój wybór:
Prosty słodki i krótki dokumentowany Falcor JS VERSUS Ogromne narzędzie klasy korporacyjnej z długą i zaawansowaną dokumentacją, taką jak GraphQL i Relay
Jak powiedziałem wcześniej, jeśli jesteś programistą front-end, który ma pojęcie o używaniu JSON, to implementacja grafów JSON od zespołu Falcor jest najlepszym sposobem na wykonanie projektu deweloperskiego z pełnym stosem.
źródło
Krótko mówiąc, Falcor, GraphQL lub Restful rozwiązują ten sam problem - zapewniają narzędzie do efektywnego przeszukiwania danych / manipulowania nimi.
Różnią się tym, jak prezentują swoje dane:
Ilekroć musimy podać dane użytkownikowi, otrzymujemy coś podobnego: klient -> zapytanie -> {warstwa tłumaczy zapytanie na operacje danych} -> dane.
Po zmaganiach z GraphQL, Falcor i JSON API (a nawet ODdata) napisałem własną warstwę zapytań o dane . Jest prostszy, łatwiejszy do nauczenia i bardziej równoważny z GraphQL.
Sprawdź to na:
https://github.com/giapnguyen74/nextql
Integruje się również z featherjs w celu wyszukiwania / mutacji w czasie rzeczywistym. https://github.com/giapnguyen74/nextql-feathers
źródło
OK, po prostu zacznij od prostej, ale ważnej różnicy, GraphQL jest oparty na zapytaniach, a Falcor nie!
Ale jak ci pomagają?
Zasadniczo oboje pomagają nam zarządzać danymi i wyszukiwać je, ale GraphQL ma model wymagań / rozdzielczości i zwraca dane jako JSON , w zasadzie idea w GraphQL polega na tym, że ma jedno żądanie, aby uzyskać wszystkie dane w jednym celu ... Ponadto, mają dokładną odpowiedź, mając dokładną prośbę, Więc coś, co działa na wolnym internecie i urządzeniach mobilnych, takich jak sieci 3G ... Więc jeśli masz wielu użytkowników mobilnych lub z jakiegoś powodu, chciałbyś mieć mniej żądań i szybszą odpowiedź użyj GraphQL ... Podczas gdy Faclor nie jest zbyt daleko od tego, więc czytaj dalej ...
Z drugiej strony Falcor firmy Netflix zwykle mają dodatkowe żądanie (zwykle więcej niż raz), aby pobrać wszystkie dane, chociaż próbują ulepszyć je do jednego wymagania ... Falcor jest bardziej ograniczony do zapytań i nie ma -definiowane pomocniki zapytań, takie jak zakres i itp ...
Ale aby uzyskać więcej wyjaśnień, zobaczmy, jak każdy z nich się przedstawia:
źródło