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
Martin Muñoz
September 11, 2014
Programming
0
94
Ember 1.8 Beta
Martin Muñoz
September 11, 2014
Tweet
Share
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
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
260
Ruby x Terminal
a_matsuda
7
590
Fundamentals of Software Engineering In the Age of AI
therealdanvega
1
250
Docコメントで始める簡単ガードレール
keisukeikeda
1
110
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
280
Codexに役割を持たせる 他のAIエージェントと組み合わせる実務Tips
o8n
4
1.3k
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
130
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
450
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
2
730
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
15
8.7k
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
260
猫の手も借りたい!ので AIエージェント猫を作って社内に放した話 Claude Code × Container Lambda の Slack Bot "DevNeko"
naramomi7
0
260
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Designing Powerful Visuals for Engaging Learning
tmiket
0
270
Fireside Chat
paigeccino
42
3.8k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
340
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Paper Plane
katiecoart
PRO
0
48k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Amusing Abliteration
ianozsvald
0
130
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
30 Presentation Tips
portentint
PRO
1
250
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