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
Functional Ember
Search
Paul Chavard
July 04, 2015
Programming
290
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
53
HTTP
tchak
3
210
Ember Data REBOOT
tchak
0
150
Ember Data: (Advanced) Patterns
tchak
2
250
EmberJS Introduction
tchak
1
200
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
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
220
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
310
霧の中の代数的エフェクト
funnyycat
1
260
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
240
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
250
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
240
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1k
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
170
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
490
dRuby over BLE
makicamel
2
410
act1-costs.pdf
sumedhbala
0
170
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
240
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.5k
BBQ
matthewcrist
89
10k
Typedesign – Prime Four
hannesfritz
42
3.1k
Believing is Seeing
oripsolob
1
160
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
KATA
mclloyd
PRO
35
15k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
280
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
220
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
350
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