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
Functional Ember
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Paul Chavard
July 04, 2015
Programming
300
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Functional Ember
Paul Chavard
July 04, 2015
More Decks by Paul Chavard
See All by Paul Chavard
Le Tour du monde en quatre-vingts jours
tchak
1
63
HTTP
tchak
3
210
Ember Data REBOOT
tchak
0
160
Ember Data: (Advanced) Patterns
tchak
2
260
EmberJS Introduction
tchak
1
210
From SproutCore to Ember
tchak
2
260
Ember Data
tchak
11
850
Ember.js
tchak
10
1.6k
Other Decks in Programming
See All in Programming
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
140
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
290
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
R8 の設定見直しでアプリサイズ削減
andpad
0
220
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
SREの越境 / SRE Collaboration
y0hgi
2
310
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.5k
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
Featured
See All Featured
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
480
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
500
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
550
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
930
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
490
Transcript
Functional Ember Paul Chavard @tchak13
CapitaineTrain
What is EmberJS?
None
Ember 2.0
URLs (Router)
None
Declarative UIs
“[…] The reason I built Handlebars in the first place
wasn't an attempt to create a "logicless" template engine. I build Handlebars so that I could start from zero and build up syntactic structures that would support data binding from the get-go.” Yehuda Katz
• Handlebars • HTMLBars • Glimmer
<ul> {{#each tickets as |ticket|}} <li> {{input type="checkbox" checked=ticket.isSelected change=(action
select ticket)}} <div class="od"> {{ticket.origin.name}} -> {{ticket.destination.name}} </div> <div class="departure"> Departure: {{moment ticket.departure}} </div> <div class="arrival"> Arrival: {{moment ticket.arrival}} </div> </li> {{/each}} </ul>
Tooling
ember new my-beautiful-app cd my-beautiful-app ember install ember-moment ember generate
route index ember generate component my-stuff ember test ember build ember deploy ember-cli
LiveReload + Errors
Ember Inspector
Tests
Frameworks are about Commoditization
“Boring”
None
None
ES 6 / 7 / 2015
BabelJS
• Modules • Promise • @@iterator / Generators • =>
• …
Functional Relationship
A functional relationship is a relationship in which the value
of one variable varies with changes in the values of a second variable.
A relationship is considered functional when there is respect, accountability
and resilience. A functional relationship offers an emotionally safe environment for the people involved and respects privacy of space.
Functional Paradigms
"If someone says to you that JavaScript is a functional
language, slap him in the face.” Garrett Smith
• data driven architecture • immutable data • pure functions/components
• @@iterator / transducers • type systems
Immutable.js bower install immutable
// app/helpers/get-in.js import Ember from 'ember'; const { makeBoundHelper }
= Ember.HTMLBars; export default makeBoundHelper(function([scope, path]) { return scope.getIn(path.split('.')); });
<ul> {{#each tickets as |ticket index|}} <li> {{input type="checkbox" checked=(get-in
ticket 'isSelected') change=(action select index)}} <div> {{get-in ticket 'origin.name'}} -> {{get-in ticket 'destination.name'}} </div> <div> Departure: {{moment (get-in ticket 'departure')}} </div> <div> Arrival: {{moment (get-in ticket 'arrival')}} </div> </li> {{/each}} </ul>
Components
Helpers
Actions
@@iterator
transducers bower install transducers-js
Transducers are composable algorithmic transformations. They are independent from the
context of their input and output sources and specify only the essence of the transformation in terms of an individual element.
Flow npm install babel-plugin-typecheck
None
What’s next?
FastBoot
Thank You
Questions ? @tchak13