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
- Specyfikacja przekaźnika GraphQL
- Identyfikacja obiektu
- Połączenie
- Mutacje
- Dalsze czytanie
ODNIESIENIE DO API
Przekaźnik
- RelayContainer
- Relay.Route
- Relay.RootContainer
- Relay.QL
- Przekaźnik. Mutacja
- Relay.PropTypes
- Przekaźnik Sklep
INTERFEJSY
RelayNetworkLayer
- RelayMutationRequest
- RelayQueryRequest
b) GrapQL: https://facebook.github.io/graphql/
- 2 Język
- 2.1 Tekst źródłowy
- 2.1.1 Unicode
- 2.1.2 Biała przestrzeń
- 2.1.3 Terminatory linii
- 2.1.4 Uwagi
- 2.1.5 Nieistotne przecinki
- 2.1.6 Tokeny leksykalne
- 2.1.7 Zignorowane tokeny
- 2.1.8 Wykrętaki
- 2.1.9 Nazwy
- 2.2 Dokument zapytania
- 2.2.1 Operacje
- 2.2.2 Zestawy selekcji
- 2.2.3 Pola
- 2.2.4Argumenty
- 2.2.5 Alias pola
- 2.2.6 Fragmenty
- 2.2.6.1 Warunki typu
- 2.2.6.2 Fragmenty w linii
- 2.2.7 Wartości wejściowe
- 2.2.7.1 Wartość Int
- 2.2.7.2 Wartość zmienna
- 2.2.7.3 Wartość logiczna
- 2.2.7.4 Wartość ciągu
- 2.2.7.5 Wartość liczbowa
- 2.2.7.6 Wartość listy
- 2.2.7.7 Wprowadzanie wartości obiektów
- 2.2.8 Zmienne
- 2.2.8.1 Zmienne użycie w ramach fragmentów
- 2.2.9 Typy wejść
- 2.2.10Dyrektywy
- 2.2.10.1 Dyrektywy fragmentaryczne
- 3 System typów
- 3.1 Rodzaje
- 3.1.1 Skalary
- 3.1.1.1 Wbudowane skalary
- 3.1.1.1.1 Int
- 3.1.1.1.2 Float
- 3.1.1.1.3 Ciąg
- 3.1.1.1.4Boolean
- 3.1.1.1.5ID
- 3.1.2 Przedmioty
- 3.1.2.1 Argumenty pola obiektu
- 3.1.2.2 Wycofanie pola obiektu
- 3.1.2.3 Walidacja typu obiektu
- 3.1.3 Interfejsy
- 3.1.3.1 Weryfikacja typu interfejsu
- 3.1.4 Związki
- 3.1.4.1 Walidacja typu unii
- 3.1.5 Enum
- 3.1.6 Obiekty wejściowe
- 3.1.7 Listy
- 3.1.8 Brak wartości Null
- 3.2 Dyrektywy
- 3.2.1@skip
- 3.2.2@include
- 3.3 Typy początkowe
- 4Introspection
- 4.1 Zasady ogólne
- 4.1.1 Konwencje nazewnictwa
- 4.1.2 Dokumentacja
- 4.1.3 Wycofanie się
- 4.1.4 Introspekcja nazw typów
- 4.2 Introspekcja schematu
- 4.2.1Typ „__Type”
- 4.2.2 Rodzaje typów
- 4.2.2.1Skalar
- 4.2.2.2 Przedmiot
- 4.2.2.3Union
- 4.2.2.4 Interfejs
- 4.2.2.5 Enum
- 4.2.2.6 Obiekt wejściowy
- 4.2.2.7 Lista
- 4.2.2.8 Brak wartości zerowej
- 4.2.2.9 Łączenie listy i wartości niezerowej
- 4.2.3 Typ __Field
- 4.2.4Typ __InputValue
- 5 Walidacja
- 5.1 Operacje
- 5.1.1 Definicje nazwanych operacji
- 5.1.1.1 Niepowtarzalność nazwy operacji
- 5.1.2 Definicje anonimowych operacji
- 5.1.2.1 Samodzielna anonimowa operacja
- 5.2 Pola
- 5.2.1 Wybór pól dla typów obiektów, interfejsów i unii
- 5.2.2 Scalanie wyboru pola
- 5.2.3 Wybór pól liści
- 5.3 Instrumenty
- 5.3.1 Nazwy instrumentów
- 5.3.2 Wyjątkowość instrumentu
- 5.3.3 Poprawność typów wartości instrumentów
- 5.3.3.1 Zgodne wartości
- 5.3.3.2 Wymagane argumenty
- 5.4 Fragmenty
- 5.4.1 Deklaracje fragmentów
- 5.4.1.1 Niepowtarzalność nazwy fragmentu
- 5.4.1.2 Istnienie typu spreadu fragmentowego
- 5.4.1.3Fragmenty w typach złożonych
- 5.4.1.4 Fragmenty muszą być używane
- 5.4.2 Fragmentowe spready
- 5.4.2.1 Zdefiniowano cel rozproszenia fragmentów
- 5.4.2.2 Spready fragmentaryczne nie mogą tworzyć cykli
- 5.4.2.3 Rozprzestrzenianie się fragmentów jest możliwe
- 5.4.2.3.1 Rozpiętości obiektów w zakresie obiektów
- 5.4.2.3.2 Abstrakcyjne rozrzuty w zakresie obiektu
- 5.4.2.3.3 Spready obiektów w zakresie abstrakcyjnym
- 5.4.2.3.4 Abstrakcyjne spready w zakresie abstrakcyjnym
- 5.5 Wartości
- 5.5.1 Unikalność pola obiektu wejściowego
- 5.6 Dyrektywy
- 5.6.1 Dyrektywy są zdefiniowane
- 5.7 Zmienne
- 5.7.1 Zmienna niepowtarzalność
- 5.7.2 Zmienne wartości domyślne są poprawnie wpisywane
- 5.7.3 Zmienne to typy danych wejściowych
- 5.7.4 Zdefiniowane wszystkie zastosowania zmiennych
- 5.7.5 Wszystkie używane zmienne
- 5.7.6 Wszystkie zastosowania zmiennych są dozwolone
- 6 Wykonanie
- 6.1 Ocena wniosków
- 6.2 Zmienne wymuszające
- 6.3 Operacje oceniające
- 6.4 Ocena zbiorów wskazań
- 6.5 Ocena zgrupowanego zestawu pól
- 6.5.1 Wpisy polowe
- 6.5.2 Normalna ocena
- 6.5.3 Wykonanie seryjne
- 6.5.4 Obsługa błędów
- 6.5.5 Nieważność
- 7Response
- 7.1 Format serializacji
- 7.1.1 Serializacja JSON
- 7.2 Format odpowiedzi
- 7.2.1Dane
- 7.2.2 Błędy
- Dodatek: Konwencje zapisu
- A.1 Gramatyka bezkontekstowa
- A.2 Gramatyka leksykalna i syntaktyczna
- A.3 Notacja gramatyczna
- A.4 Semantyka gramatyki
- A.5 Algorytmy
- B Dodatek: Podsumowanie gramatyki
- B.1 Ignorowane żetony
- B.2 Tokeny leksykalne
- B.3 Dokument zapytania
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.