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 Frame...
Search
Emmanuel DEMEY
January 26, 2018
Programming
0
200
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
250
Il n’y a pas que Angular, React ou VueJS dans la vie
gillespie59
1
300
Progressive Webapps
gillespie59
0
300
Angular2 et les standards du Web
gillespie59
0
140
BBL TypeScript
gillespie59
0
210
Other Decks in Programming
See All in Programming
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
440
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
350
VS Code Update for GitHub Copilot
74th
2
630
PicoRuby on Rails
makicamel
2
130
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
270
猫と暮らす Google Nest Cam生活🐈 / WebRTC with Google Nest Cam
yutailang0119
0
110
A2A プロトコルを試してみる
azukiazusa1
2
1.3k
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
110
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
120
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
730
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
130
Rubyでやりたい駆動開発 / Ruby driven development
chobishiba
1
660
Featured
See All Featured
Producing Creativity
orderedlist
PRO
346
40k
RailsConf 2023
tenderlove
30
1.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
52k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
The Invisible Side of Design
smashingmag
301
51k
Docker and Python
trallard
44
3.5k
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 !