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
58
HTTP
tchak
3
210
Ember Data REBOOT
tchak
0
160
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
VibeCodingからAgenticWorkflowへ
starfish719
0
450
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.8k
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
140
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.6k
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
190
Cloudflare is Agents
chimame
0
160
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.6k
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
320
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.4k
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
110
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
270
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
480
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
460
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
230
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.3k
The Limits of Empathy - UXLibs8
cassininazir
1
600
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
200
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
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