Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
How to to choose your next JavaScript Web Framework?
Search
Emmanuel DEMEY
January 26, 2018
Programming
0
190
How to to choose your next JavaScript Web Framework?
Emmanuel DEMEY
January 26, 2018
Tweet
Share
More Decks by Emmanuel DEMEY
See All by Emmanuel DEMEY
Devoxx France - Stack Elastic
gillespie59
0
230
Il n’y a pas que Angular, React ou VueJS dans la vie
gillespie59
1
280
Progressive Webapps
gillespie59
0
290
Angular2 et les standards du Web
gillespie59
0
120
BBL TypeScript
gillespie59
0
190
Other Decks in Programming
See All in Programming
Jetpack Composeとデザインシステム
rmakiyama
0
230
JS RPCを理解する
yusukebe
5
280
スタックトレース始めてみた
kuro_kurorrr
4
1.1k
freeeのエンジニアが 就活で出そうな コーディングテストを 解説してみる
freee
1
170
チーム立ち上げにAWSを活用したらClaudeさんに褒められた話
mkdev10
3
230
Timeline エディター拡張入門
yucchiy
0
450
Balkan Ruby 2024 — How and why to run SQLite on Rails in production
fractaledmind
0
110
The Design of Everyday APIs - PyCon 2024
roguelynn
0
190
The Cutting Edge Of Versioning (LambdaConf 2024)
chriskrycho
0
250
Effectで作る堅牢でスケーラブルなAPIゲートウェイ / Robust and Scalable API Gateway Built on Effect
yasaichi
7
1.2k
Long journey of Ruby standard library RubyKaigi 2024
andpad
2
230
ソースコードを美しくたもつために ~コードレビューの認知限界を突破し、年間400リリースを達成する~
kotauchisunsun
1
770
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
226
17k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
Designing on Purpose - Digital PM Summit 2013
jponch
111
6.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
228
130k
What the flash - Photography Introduction
edds
64
11k
Fantastic passwords and where to find them - at NoRuKo
philnash
39
2.5k
Agile that works and the tools we love
rasmusluckow
325
20k
Designing for humans not robots
tammielis
247
25k
GraphQLの誤解/rethinking-graphql
sonatard
56
9.3k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Making the Leap to Tech Lead
cromwellryan
125
8.6k
Git: the NoSQL Database
bkeepers
PRO
423
63k
Transcript
How to choose your next JavaScript Web Framework
WHO’S WHO Emmanuel Demey (@EmmanuelDemey)
None
None
A HUGE ECOSYSTEM
How to choose your next JavaScript Web Framework ?
AGENDA • Component approach ◦ What is a component ?
◦ Webcomponents, Polymer. • Popular Frameworks/Librairies ◦ Angular ◦ React ◦ Vue.js • Patterns ◦ Flux, Redux • JS Mobile ◦ Hybrid / Natives / PWA Applications
HISTORY
HISTORY
HISTORY
HISTORY → Web Application in a browser - SPA
HISTORY
Components
COMPONENTS Example ElementHTML properties View State
ElementHTML properties View State COMPONENTS Example
ElementHTML properties View State COMPONENTS Example
ElementHTML properties View State COMPONENTS Example
ElementHTML properties View State COMPONENTS Example
WEBCOMPONENTS.ORG COMPONENTS
ATOMIC DESIGN
ATOMIC DESIGN
ATOMIC DESIGN
ATOMIC DESIGN
ATOMIC DESIGN
ATOMIC DESIGN
Popular Frameworks
None
Just
DIFFERENCES WITH ANGULAR JS • Completely new framework • Component
oriented approach • TypeScript
FIRST COMPONENT ElementHTML properties View State
FIRST COMPONENT
FIRST COMPONENT
EVENT BINDING = ()
PROPERTY BINDING = []
API • Component parameters ◦ @Input() • Component state ◦
private myState: boolean; • Templating ◦ Directives: *ngIf, *ngFor, [ngClass] • Component Lifecycle ◦ ngOnChanges ◦ ngOnInit ◦ ngOnDestroy ◦ etc... ◦ @Injectable() ◦ @Pipe() • Elements ◦ @NgModule() ◦ @Component() export class MyComponent {}
DEPENDENCY INJECTION • More powerful than AngularJS • Providers ◦
Global configuration : @NgModule ◦ Local configuration : @Component • Dependency Injection ◦ With constructor parameters in a class ◦ @Injectable inside a Service
ANGULAR, A PLATFORM
None
FIRST COMPONENT
JSX
JSX
FIRST COMPONENT
FIRST COMPONENT
FIRST COMPONENT
FIRST COMPONENT
VIRTUAL DOM PATCH Set <h1> to “Marcel” <h1> Docker </h1>
Virtual DOM Before <h1> Marcel </h1> Virtual DOM After DIFF 1 <h1> Docker </h1> Real DOM Before <h1> Marcel </h1> Real DOM After APPLY 2
API • Create a component ◦ createClass ◦ extends Component
◦ pure function • Component parameter ◦ props • Component state ◦ state • Templating ◦ JSX • Component Lifecycle ◦ componentWillMount ◦ componentDidMount ◦ etc...
USERS
None
FIRST COMPONENT
FIRST COMPONENT
FIRST COMPONENT
FIRST COMPONENT
FIRST COMPONENT
API • Create a component ◦ Vue.component() • Component parameters
◦ props: [] • Component state ◦ data: () => {} • Templating ◦ Directives: v-bind, v-on... • Component Lifecycle ◦ beforeCreate ◦ mounted ◦ beforeDestroy ◦ etc...
USERS
Patterns
COMPLEX COMPONENT-ORIENTED ARCHITECTURE C C C C C C C
state state state state state state state
REDUX Store C connect()
REDUX Store C connect() Action dispatch() Reducer
REDUX Store C connect() Action dispatch() Reducer newState
JS Mobile
JS MOBILE
HYBRID
HYBRID
“NATIVE”
“NATIVE” VS “HYBRID” do we really need all this stuff
?
PROGRESSIVE WEB APP
PROGRESSIVE WEB APP
How to choose the right JavaScript framework ?
None
Questions ? Thanks !