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
54
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
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.9k
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
850
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
190
act1-costs.pdf
sumedhbala
0
240
Foundation Models frameworkで画像分析
ryodeveloper
1
130
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
200
AIが無かった頃の素敵な出会いの話
codmoninc
1
210
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
110
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
220
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
500
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
270
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
8
3.1k
Featured
See All Featured
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.4k
Embracing the Ebb and Flow
colly
88
5.1k
We Are The Robots
honzajavorek
0
280
Designing for Performance
lara
611
70k
Evolving SEO for Evolving Search Engines
ryanjones
0
240
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
The Limits of Empathy - UXLibs8
cassininazir
1
530
Ruling the World: When Life Gets Gamed
codingconduct
0
290
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
410
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
We Have a Design System, Now What?
morganepeng
55
8.2k
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