Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
UpLeveled___GraphQL_for_JS_developers.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Glenn Reyes
September 11, 2019
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
UpLeveled___GraphQL_for_JS_developers.pdf
Glenn Reyes
September 11, 2019
More Decks by Glenn Reyes
See All by Glenn Reyes
Dutch AI Conference - Building Interactive Chat Interfaces with MCP-UI
glennreyes
0
60
Advanced TypeScript for React
glennreyes
0
140
TypeScript Patterns for Better React Components
glennreyes
1
560
GraphQL for React Developers
glennreyes
0
240
When things go wrong, get errors right!
glennreyes
0
180
GraphQL for JS developers
glennreyes
1
190
Building Dapps with React
glennreyes
0
150
Third-Party or Custom Code? The Art of Software Decisions
glennreyes
0
140
UI/UX challenges of Web3 and Dapps
glennreyes
0
210
Other Decks in Programming
See All in Programming
flutter_test のその先へ — Flutter アプリの LLM 機能に「評価」という品質保証を
kosukesaigusa
0
200
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
180
はじめてのPLATEAU
nokonoko1203
1
580
Enforcing Your Architecture with Unit Tests in the AI Era (Swift Connection X)
steliosf
PRO
1
150
Next.js: The final boss of Web Performance
guaca
0
380
オーケストレーション記述言語 Katari
yukikurage
0
240
Seven New Principles of Software Engineering
yegor256
0
460
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
410
LLM 101
dalinaum
0
470
AI駆動開発4年目の現在地(『あなたはFDEになるべきか?』イベント資料)
kumaiu
0
270
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
200
Moscow Python Meetup №112. Как поселить ИИ агентов в event driven архитектуре
moscowdjango
PRO
0
110
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
320
Believing is Seeing
oripsolob
1
270
Designing Experiences People Love
moore
143
24k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Side Projects
sachag
456
43k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Building the Perfect Custom Keyboard
takai
2
950
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
930
Everyday Curiosity
cassininazir
0
390
Rails Girls Zürich Keynote
gr2m
96
14k
Transcript
@glnnrys · glennreyes.com GraphQL for JS developers
@glnnrys · glennreyes.com > whoami
@glnnrys · glennreyes.com Glenn Reyes Independent Software Engineer
@glnnrys · glennreyes.com Goals for today
@glnnrys · glennreyes.com Learn
@glnnrys · glennreyes.com Fun
@glnnrys · glennreyes.com Success!!!
@glnnrys · glennreyes.com What is GraphQL?
@glnnrys · glennreyes.com Query Language for APIs
@glnnrys · glennreyes.com Ask for what you want And get
predictable results
@glnnrys · glennreyes.com
@glnnrys · glennreyes.com www.graphql.org
@glnnrys · glennreyes.com Describe your data
Describe your data
None
User
Tweet Tweet
User Tweet
Describe your data User Tweet
Describe your data User Tweet name email username bio age
tweets message from
@glnnrys · glennreyes.com Describe your Schema in a Type System
@glnnrys · glennreyes.com type Tweet { id: ID! message: String!
from: User } type User { name: String! email: String! bio: String age: Int tweets: [Tweet!]! username: String! }
@glnnrys · glennreyes.com type Query { getUser(email: String!): User! getTweets(username:
String!): [Tweet!]! } type Mutation { createTweet: Tweet deleteTweet(id: ID!): Tweet updateTweet(id: ID!): Tweet }
@glnnrys · glennreyes.com # GET something type Query { getUser(email:
String!): User! getTweets(username: String!): [Tweet!]! } # DO something type Mutation { createTweet: Tweet deleteTweet(id: ID!): Tweet updateTweet(id: ID!): Tweet }
@glnnrys · glennreyes.com # GET something type Query { #
Get a user by the email adress getUser(email: String!): User! # Get tweets getTweets(username: String!): [Tweet!]! } # DO something type Mutation { createTweet: Tweet deleteTweet(id: ID!): Tweet updateTweet(id: ID!): Tweet }
@glnnrys · glennreyes.com type Tweet { id: ID! message: String!
from: User } type User { name: String! email: String! bio: String age: Int tweets: [Tweet!]! username: String! } type Query { getUser(email: String!): User! getTweets(username: String!): [Tweet!]! } type Mutation { createTweet: Tweet deleteTweet(id: ID!): Tweet updateTweet(id: ID!): Tweet }
@glnnrys · glennreyes.com Int Float String Boolean ID
@glnnrys · glennreyes.com www.graphql.org
@glnnrys · glennreyes.com Ask for what you want
@glnnrys · glennreyes.com Ask for what you want And get
predictable results
@glnnrys · glennreyes.com Ask for what you want And get
predictable results
{ name twitter job expertise oss(type: "most-popular") elseIDo } {
"name": "Glenn Reyes", "twitter": "@glnnrys", "job": "Independent Software Engineer", "expertise": ["React", "GraphQL"], "oss": ["graphpack", "react-countup"], "elseIDo": [ "Co-organize React Vienna", "Speak at conferences", "Give workshops" ] }
{ name twitter job expertise oss(type: "most-popular") elseIDo } {
"name": "Glenn Reyes", "twitter": "@glnnrys", "job": "Independent Software Engineer", "expertise": ["React", "GraphQL"], "oss": ["graphpack", "react-countup"], "elseIDo": [ "Co-organize React Vienna", "Speak at conferences", "Give workshops" ] } GraphQL Query JSON
{ name twitter job expertise oss(type: "most-popular") elseIDo } {
"name": "Glenn Reyes", "twitter": "@glnnrys", "job": "Independent Software Engineer", "expertise": ["React", "GraphQL"], "oss": ["graphpack", "react-countup"], "elseIDo": [ "Co-organize React Vienna", "Speak at conferences", "Give workshops" ] } GraphQL Query JSON
{ name twitter job } { "name": "Glenn Reyes", "twitter":
"@glnnrys", "job": "Independent Software Engineer" } GraphQL Query JSON
@glnnrys · glennreyes.com What is GraphQL?
@glnnrys · glennreyes.com Query Language for APIs
@glnnrys · glennreyes.com Ask for what you want And get
predictable results
@glnnrys · glennreyes.com It's Language Agnostic
@glnnrys · glennreyes.com
@glnnrys · glennreyes.com Why GraphQL?
@glnnrys · glennreyes.com GraphQL Architecture
@glnnrys · glennreyes.com Servers Clients
@glnnrys · glennreyes.com Makes managing data difficult in the frontend
Servers Clients
@glnnrys · glennreyes.com Servers Clients GraphQL
@glnnrys · glennreyes.com Servers Clients GraphQL GraphQL handles data management
for us
@glnnrys · glennreyes.com Servers Clients GraphQL GraphQL handles data management
for us delivers us data exactly as needed
@glnnrys · glennreyes.com Servers Clients GraphQL GraphQL handles data management
for us delivers us data exactly as needed let's us focus on the frontend
@glnnrys · glennreyes.com What else?
@glnnrys · glennreyes.com Tooling
@glnnrys · glennreyes.com Query IDEs
@glnnrys · glennreyes.com Query IDEs (IDE = Integrated Development Environment)
@glnnrys · glennreyes.com Query IDEs (IDE = An Editor )
@glnnrys · glennreyes.com github.com/graphql/graphiql
@glnnrys · glennreyes.com github.com/prisma/graphql-playground
@glnnrys · glennreyes.com Automatic Documentation
@glnnrys · glennreyes.com
@glnnrys · glennreyes.com
@glnnrys · glennreyes.com
@glnnrys · glennreyes.com const MyProfile = () => { const
{ data, loading } = useQuery(gql` { name email bio } `); if (loading) { return 'Loading ...'; } return <ProfilePage data={data} />; };
@glnnrys · glennreyes.com Questions?
@glnnrys · glennreyes.com Let's get started!
@glnnrys · glennreyes.com github.com/glennreyes/graphql-workshop/tree/upleveled