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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
120
メールのエイリアス機能を履き違えない
isshinfunada
0
250
不幸な GC
chencmd
0
430
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
260
Android CLI
fornewid
0
230
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
220
30年振りにコンパイラの定数整数除算を改善した
herumi
7
2.8k
リアルな遅延を測る仕様
kota_yata
1
120
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
210
AIと壁打ちしながら進めるコスト管理
fufuhu
1
1.3k
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
120
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
170
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Designing Powerful Visuals for Engaging Learning
tmiket
1
500
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
280
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
220
Automating Front-end Workflow
addyosmani
1369
210k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
The Curious Case for Waylosing
cassininazir
1
470
Music & Morning Musume
bryan
47
7.3k
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