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
AI時代のUIはどこへ行く?
yusukebe
18
8.9k
Tool Catalog Agent for Bedrock AgentCore Gateway
licux
6
2.4k
テストコードはもう書かない:JetBrains AI Assistantに委ねる非同期処理のテスト自動設計・生成
makun
0
260
1から理解するWeb Push
dora1998
7
1.9k
Compose Multiplatform × AI で作る、次世代アプリ開発支援ツールの設計と実装
thagikura
0
150
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
110
複雑なドメインに挑む.pdf
yukisakai1225
5
1.1k
アプリの "かわいい" を支えるアニメーションツールRiveについて
uetyo
0
260
Android端末で実現するオンデバイスLLM 2025
masayukisuda
1
150
時間軸から考えるTerraformを使う理由と留意点
fufuhu
16
4.8k
Updates on MLS on Ruby (and maybe more)
sylph01
1
180
もうちょっといいRubyプロファイラを作りたい (2025)
osyoyu
1
430
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
112
20k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Docker and Python
trallard
45
3.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Site-Speed That Sticks
csswizardry
10
810
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Scaling GitHub
holman
463
140k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
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 !