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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Emmanuel DEMEY
January 26, 2018
Programming
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How to to choose your next JavaScript Web Framework?
Emmanuel DEMEY
January 26, 2018
More Decks by Emmanuel DEMEY
See All by Emmanuel DEMEY
Devoxx France - Stack Elastic
gillespie59
0
260
Il n’y a pas que Angular, React ou VueJS dans la vie
gillespie59
1
310
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
スマートグラスで並列バイブコーディング
hyshu
0
230
1B+ /day規模のログを管理する技術
broadleaf
0
100
Performance Engineering for Everyone
elenatanasoiu
0
190
Claspは野良GASの夢をみるか
takter00
0
200
OSもどきOS
arkw
0
580
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
250
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.2k
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
270
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
560
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
120
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.3k
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
It's Worth the Effort
3n
188
29k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
460
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
210
Done Done
chrislema
186
16k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
610
Into the Great Unknown - MozCon
thekraken
41
2.6k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
66
55k
Code Review Best Practice
trishagee
74
20k
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 !