35
Ember.js at Zendesk

Ember.js at Zendesk

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Ember.js at Zendesk

Ember.js at Zendesk

Page 2: Ember.js at Zendesk

Follow me on Twitter: @danielbreves

Daniel Breves SOFTWARE ENGINEER, ZENDESK

Page 3: Ember.js at Zendesk

Ember.js at Zendesk• A little Zen history • Why Ember? • Extensions (Sammy.js, Ember-Resource, Ember-CPM, Ember.I18n) • Namespaces vs Modules • The Run Loop & The Object Model • Optimisations • Jasmine/Unit testing • Zendesk App Framework/Marketplace

Page 4: Ember.js at Zendesk

A little Zen history

Page 5: Ember.js at Zendesk
Page 6: Ember.js at Zendesk

Why Ember?

Page 7: Ember.js at Zendesk

• Designed for large web applications • Convention over configuration • Dynamic bindings! • Vibrant, growing community

Why Ember?

Page 8: Ember.js at Zendesk

How big is Zendesk?

JS CSS IMG

app 1.1 MB 403 KB 131.1 KB

templates 671 KB

vendor 717 KB 29.3 KB 8.6 KB

Page 9: Ember.js at Zendesk

How big is Zendesk?

Over a thousand app servers responding to an average of ~100k rpm

Page 10: Ember.js at Zendesk

Extensions

Page 11: Ember.js at Zendesk

• Sammy.js/Router.js • Ember-Resource • Ember-CPM • Ember-I18n

Extensions

Page 12: Ember.js at Zendesk

Ember-Resource - https://github.com/zendesk/ember-resource

Page 13: Ember.js at Zendesk

Ember-CPM - https://github.com/jamesarosen/ember-cpm

Page 14: Ember.js at Zendesk

Ember.I18n- https://github.com/jamesarosen/ember-i18n

Page 15: Ember.js at Zendesk

Namespaces vs Modules

Page 16: Ember.js at Zendesk

• Pollutes the global scope • Hard to manage dependencies • Leads to tight coupling • Enforces managing loading order • Hard to test

Namespaces

Page 17: Ember.js at Zendesk

• Does not pollute the global scope • Dependencies are easy to locate • Handles loading order for you • Easier to test

Modules with script loaders

Page 18: Ember.js at Zendesk

Stop using namespaces!

Before After

Page 19: Ember.js at Zendesk

!

The Run Loop & The Object Model

!

Page 20: Ember.js at Zendesk

Run Loop

A way of grouping computations in different queues, which run in a certain order.

Page 21: Ember.js at Zendesk

Bindings

Page 22: Ember.js at Zendesk

Computed properties all the things! !

!

Computed Properties

Page 23: Ember.js at Zendesk

The Ember.Mixin class allows you to create mixins, whose properties can be added to other classes.

Observers

Page 24: Ember.js at Zendesk

Optimisations

Page 25: Ember.js at Zendesk

Pure handlebars

Page 26: Ember.js at Zendesk

Caching views

Page 27: Ember.js at Zendesk

Boot load vs asynchronous calls

Page 28: Ember.js at Zendesk

Jasmine/Unit testing !

Page 29: Ember.js at Zendesk

Jasmine/Unit testing

Page 30: Ember.js at Zendesk

Zendesk App Framework/Marketplace

!

Page 31: Ember.js at Zendesk

Zendesk Apps

Page 32: Ember.js at Zendesk

Marketplace

Page 33: Ember.js at Zendesk

Ember.js at Zendesk• A little Zen history • Why Ember? • Extensions (Sammy.js, Ember-Resource, Ember-CPM, Ember.I18n) • Namespaces vs Modules • The Run Loop & The Object Model • Optimisations • Jasmine/Unit testing • Zendesk App Framework/Marketplace

Page 34: Ember.js at Zendesk

Thanks!

Page 35: Ember.js at Zendesk

• Ember-Resource https://github.com/zendesk/ember-resource !

• Ember-CPM https://github.com/jamesarosen/ember-cpm !

• Ember.I18n https://github.com/jamesarosen/ember-i18n

Zendesk tools