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
Ember 1.8 Beta
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Martin Muñoz
September 11, 2014
Programming
97
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ember 1.8 Beta
Martin Muñoz
September 11, 2014
More Decks by Martin Muñoz
See All by Martin Muñoz
Anatomy of HTMLBars Templates
mmun
8
1.4k
Other Decks in Programming
See All in Programming
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.7k
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.2k
仕様駆動開発の消費期限
watany
20
7.8k
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.5k
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
220
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
710
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
310
Google Apps Script で Ruby を動かす
kawahara
0
150
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
270
数百円から始めるRuby電子工作
tarosay
0
140
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
130
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
380
KATA
mclloyd
PRO
35
15k
Marketing to machines
jonoalderson
1
5.7k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
250
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Writing Fast Ruby
sferik
630
63k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Navigating Weather and Climate Data
rabernat
0
470
Tell your own story through comics
letsgokoyo
1
1k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Mobile First: as difficult as doing things right
swwweet
225
10k
Transcript
ember 1.8 beta and metal-views By Martin Muñoz
I work at Crowdmark still @_mmun on twitter :(
warning: the typography of this presentation will aggravate you
what’s new in ember 1.8 beta?
i don’t actually know
we’re still using Ember 1.5 at Crowdmark!
here’s what they tell me…
IE 6 and 7 are deprecated.
[applause]
what does that mean?
we still support them. please report issues.
Deprecate global access to view classes from template {{view App.PostView}}
Deprecate global access to view classes from template {{view App.PostView}}
Deprecate global access to view classes from template {{view "post"}}
Deprecate global access to view classes from template {{view "post"}}
“but I use multiple namespaces :(“ window.Blahg = Em.Namespace.create(); Blahg.PostView
= Em.View.extend(...);
np! {{view "blahg/post"}}
some big performance improvements…
Lots of string operations are now cached: - camelize/dasherize/whateverfy -
a hash lookup to tell if a path is global - a hash lookup to split
backburner’s pushUnique got a lot of love. This has a
big effect on: - Ember Data - rendering big {{each}} blocks
Thanks Stefan!
Hmm.. what else happened…
None
[ the font is called Flesh Wound ]
The metal-views rewrite entirely removes the dependency on the metamorph
package
Consequently, you will no longer see metamorph script tags
[applause]
how is that even possible?
it’s really simple!
we still use script tags!
…but they are immediately removed and replaced with two empty
TextNodes
I’ll talk more about it some day.
Today, I want to talk about bindings.
Today, I want to talk about bindings.
{{comment-list comments=model}} Specifically, how does this work?
obj from to Binding
commentListView from to Binding {{comment-list comments=model}}
commentListView from “comments” Binding {{comment-list comments=model}}
commentListView “_parentView.context.model” “comments” Binding {{comment-list comments=model}}
The job of bindings: • observe both sides of the
binding • if either side changes, schedule an update on the runloop • break ties: down always wins.
{{#each item in items}} {{name-tag name=item.name}} {{/each}} how does binding
to keywords work? how? :(
nameTagView “templateData.keywords.item.name” “name” Binding {{name-tag name=item.name}}
This doesn’t use bindings, but instead uses its own way
to resolve keywords. {{item.name}}
Ok who cares?
Well, I think its cool but…
{{#each item in items}} {{name-tag name=item.name}} {{/each}} what happens when
items changes?
Because of some complications and some others, the entire each
view much be re-rendered. So we can’t do any smart React style diffing or anything at all smarter than “actually rerender everything”.
In order for Ember to get better, we need to
improve how keywords work. It will have far reaching consequences on the composibility of components
Have you ever used _view or _view._parentView?
We can do better!
The solution we’re working on is streams.
[gasps]
It’s not done yet, and I haven’t figured out how
to explain it very well.
{{myvar}} {{#if myvar}} {{myvar}}!! {{/if}} {{x-foo value=myvar}} {{#each item
in items}} {{name-tag name=item.name}} {{item.name}} {{/each}}
{{myvar}} {{#if myvar}} {{myvar}}!! {{/if}} {{x-foo value=myvar}} {{#each item
in items}} {{name-tag name=item.name}} {{item.name}} {{/each}}
(obj2, to) Stream (obj3, to) (obj1, to) source