Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Frameworks in 2015
Search
Андрей Листочкин (Andrey Listochkin)
April 26, 2015
Programming
180
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Frameworks in 2015
Андрей Листочкин (Andrey Listochkin)
April 26, 2015
More Decks by Андрей Листочкин (Andrey Listochkin)
See All by Андрей Листочкин (Andrey Listochkin)
Everybody Stand Back! I Know Regular Expressions
listochkin
0
240
Command-line scripting with Rust. Wait, what?!
listochkin
0
420
Server Memory - BuildStuff Ukraine 2019
listochkin
0
76
Server Memory - Chernivtsi JS 2019
listochkin
1
170
10 Years Later
listochkin
0
400
Managing Managers - DevTalks iHUB
listochkin
0
87
Time, Numbers, Text
listochkin
1
670
Software Licensing: A Minefield Guide
listochkin
0
190
We Make Bots. For Real
listochkin
0
480
Other Decks in Programming
See All in Programming
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
150
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
残高管理から台帳サービスへの進化
artoy
1
200
最近”作らせてる” ローカルAIアプリの話
akit37
0
470
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
sbt 2.0: takeoff
eed3si9n
0
160
contenteditable と日本語入力に向き合う
colorful12
0
200
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
Event is what happens
moro
2
780
Jetpack Compose Mechanisms
skydoves
3
820
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.2k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
550
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Mobile First: as difficult as doing things right
swwweet
225
10k
How to build a perfect <img>
jonoalderson
1
6.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Claude Code のすすめ
schroneko
67
230k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Transcript
Frameworks in 2015 Andrey Listochkin @listochkin github.com/listochkin github.com/dev-ua
Frameworks in 2015
@listochkin frontendua.im
None
2015
Angular Ember React
MVC
MV*
*V*
***
Architecture
BIG Apps
GMail ~2007 800k
Your App Today ~1.5m
Frameworks Matter
bootstrap server DOM data 3rd-party ...
Write It By Hand
Ecosystems
Ember Ember Data Ember CLI Ember Inspector Ember Deploy LiquidFire
EmberFire Ember Paper
Ember vs React
Ember Ecosystem vs React Ecosystem
None
Missing Piece?
Abandon
Wait
Implement
and Share
Dynamics of Ecosystems
Dynamics of Open Source
Done == Dead
jQuery
Backbone
It Works!
All Bugs Fixed
No one wants it :(
Reinvent
Refactor
Bikeshed
Change!
Abandon
Batman JS Spine Knockout Can JS Durandal JavaScript MVC
Wait
Ember FastBoot
Angular 2
Mixins in React
Implement
Builds
Ember CLI
Grunt vs Gulp Browserify vs Webpack Test’em vs Karma Selenium
vs Protractor
and Share
Gold Rush
Young Ecosystems
React Flux
493 results for 'flux' https://www.npmjs.com/search?q=flux
We've found 1,276 repository results https://github.com/search? q=flux&l=JavaScript&type=Repositorie s
Facebook Flux Reflux Fluxxor Fluxible by Yahoo Alt Flummox Marty.js
McFly Lux Fynx Fluxy
Rivalry
AngularStrap vs UI Bootstrap
Unification
Ember CLI Deploy
3 projects
merged into one
6 core contributors
925 packages http://www.emberaddons.com/
Open Source is HARD
Github stars Green Badges Great Docs Big Early Adopters API
compatibility Issues Triaging
Dynamics
forced to change
missing pieces
great artists steal Steve Jobs Pablo Picasso Igor Stravinsky William
Faulkner T. S. Eliot W. H. Davenport Adams
None
common future
Predict to Future-proof
framework-agnostic architecture
since summer 2013
architecture = decisions
code
tools
dependencies
code
spacial
None
components
YUI 2007
Widgets
Angular Directive 2009
custom elements
Twitter Flight January 31, 2013
Modern Components
data down events up
React sans vDOM
Polymer May 16, 2013
<stock-badge ticket=”msft” range=”yoy” chart=”linear”>
React May 29, 2013
Ember 1.0 rc8 Aug 29, 2013
Ember Components
Rethinking Best Practices video Oct 30, 2013
components
None
dumb vs smart
dumb UI-only No dependencies No domain state
dumb is good
double wrap
smart wraps dumb
higher-order components
Route-driven Views
Nested UI
None
global UI state vs local UI state
Router.map -> @route 'talk/new', path: 'talks/new' @route 'schedule', { path:
'talks' }, -> @route 'talk', path: ':talk_id'
Router.map -> @route 'talk/new', path: 'talks/new' @route 'schedule', { path:
'talks' }, -> @route 'talk', path: ':talk_id'
Router.map -> @route 'talk/new', path: 'talks/new' @route 'schedule', { path:
'talks' }, -> @route 'talk', path: ':talk_id'
Router.map -> @route 'talk/new', path: 'talks/new' @route 'schedule', { path:
'talks' }, -> @route 'talk', path: ':talk_id'
{{outlet}}
components = tags
outlets = iframes
shallow hierarchies
UI-only components
livereloadability
share
Router + Components
Route Handler loads data handles actions
Component shows DOM DOM events => actions manages children
Router + Components
got a form? write a component! even when you don’t
reuse
Ember
controllers views components++
Angular
smallest controllers possible
directives++
angular 1.4 router UI router
React
react-router
depth
MVC
None
“easy”
Backbone
Models Sync Data binding
better
Identity
Unidirectional Data flow
immutability+FP
CQRS
Operation Transforms
Offline Mode
distributed systems
None
Battlefield
flux
flux in any framework
Monadic Data Dependencies Declaration
GraphQL
None
None
Write-Only DOM
Ember Glimmer
JSX as a Data Structure
future
ES6
ES.Next + addons
@Decorators async type annotations JSX
@Stateful({ initialize (props) { return { count: 0 }; },
reducers: { increment (props, state) { return { count: state.count + 1 }; } } }) class Counter { static propTypes = { count: PropTypes.number.isRequired, increment: PropTypes.func.isRequired }; render () { const { count, increment } = this.props; return ( <button onClick={increment}> Pressed {count} times. </button> ) } }
class MyComponent extends HTMLElement { ... }
Aurelia Angular 2.0 React Ember
tools
Ember CLI
Build Test Runner Dependencies Dev Server Generators Addons
generators
tool enforces conventions
Angular React
React Hot Loader
live reload++
Ember Inspector
Render Tree Routing Data Explorer DI Container Deprecations Promises Performance
Chrome Firefox IE Safari
dependencies
ember install:addon liquid-fire
component library build step tool ...
testing
UI tests
visit('talks/new'); fillIn('input.title', 'My Cool Talk'); click('button.submit'); andThen(() => { equal(
find('ul.talks li:last').text(), 'My Cool Talk'); });
Selenium
“Native”
pluggable renderers
jQuery vs Zepto
DOM vs Cocoa, QT
Native UI JS for App and Network
Rolling Releases
None
challenges
Angular 2 React Ember Router y y y Components y
y y ES.next y y y vDOM w y w FP+immutable n w w monadic declarations n w n Data n w y Asset Pipeline n n y Addons n n y UI testing n n y Browser Tools n n y Hot Reload n y n Isomorphic w y w Native n y n Rolling Releases n n y
Ember Productivity
React Innovation
Angular Popularity
you don’t have to be productive, innovative, or popular to
be successful
@listochkin frontendua.im
None