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
210
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
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
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
140
AI時代の認知負荷との向き合い方
optfit
0
160
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
6.1k
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
5
460
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
7.4k
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
110
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
970
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
280
Oxlint JS plugins
kazupon
1
960
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
450
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
390
Featured
See All Featured
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
130
Speed Design
sergeychernyshev
33
1.5k
Music & Morning Musume
bryan
47
7.1k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
It's Worth the Effort
3n
188
29k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
240
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
66
Embracing the Ebb and Flow
colly
88
5k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
Ruling the World: When Life Gets Gamed
codingconduct
0
140
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.3k
BBQ
matthewcrist
89
10k
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 !