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
220
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
150
BBL TypeScript
gillespie59
0
220
Other Decks in Programming
See All in Programming
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
1
730
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
170
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
500
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
950
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
230
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
210
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.8k
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
270
業務時間外もAIに働いてもらう話
colorful12
3
10k
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
260
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
660
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
120
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Odyssey Design
rkendrick25
PRO
2
800
How to Talk to Developers About Accessibility
jct
2
540
Mobile First: as difficult as doing things right
swwweet
225
10k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
430
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Tell your own story through comics
letsgokoyo
1
1.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
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 !