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
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
220
Command-line scripting with Rust. Wait, what?!
listochkin
0
420
Server Memory - BuildStuff Ukraine 2019
listochkin
0
70
Server Memory - Chernivtsi JS 2019
listochkin
1
170
10 Years Later
listochkin
0
400
Managing Managers - DevTalks iHUB
listochkin
0
86
Time, Numbers, Text
listochkin
1
660
Software Licensing: A Minefield Guide
listochkin
0
180
We Make Bots. For Real
listochkin
0
470
Other Decks in Programming
See All in Programming
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.7k
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
350
What's New in Android 2026
veronikapj
0
190
GitHubCopilotCLIのスラッシュコマンドを自作してみる
htkym
0
100
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
330
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.6k
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
150
5分で問診!Composer セキュリティ健康診断
codmoninc
0
590
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
220
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
360
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
720
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
260
Featured
See All Featured
Crafting Experiences
bethany
1
230
The untapped power of vector embeddings
frankvandijk
2
1.8k
エンジニアに許された特別な時間の終わり
watany
108
250k
How to Talk to Developers About Accessibility
jct
2
430
Paper Plane
katiecoart
PRO
2
52k
BBQ
matthewcrist
89
10k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
320
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