Slide 1

Slide 1 text

Introduction to Ember.js Paulius Norkus AdDuplex

Slide 2

Slide 2 text

What is Ember.js • A framework for creating ambitious web applications • Based on MVC • Auto-Updating DOM • Conventions over configuration • Dependencies: • jQuery • Handelbars.js

Slide 3

Slide 3 text

Core Concepts • Classes and Instances • Computed Properties • Bindings • Observers • Templates

Slide 4

Slide 4 text

Classes and Instances App.Person = Ember.Object.extend({ say: function (thing) { var name = this.get("name"); alert(name + " says: " + thing); } }); App.Soldier = App.Person.extend({ say: function(thing){ this._super.say(thing + ", sir!"); } }); var soldier = App.Soldier.create({ name: "Ryan" }); soldier.say("Yes"); // alerts "Ryan says: Yes, sir!"

Slide 5

Slide 5 text

Computed Properties App.Person = Ember.Object.extend({ firstName: null, lastName: null, fullName: function (){ return this.get("firstName") + " " + this.get("lastName"); }.property("firstName", "lastName") }); var person = App.Person.create({ firstName: "Paulius", lastName: "Norkus" }); person.get("fullName"); // "Paulius Norkus"

Slide 6

Slide 6 text

Bindings App.wife = Ember.Object.create({ householdIncome: 80000 }); App.husband = Ember.Object.create({ houseboldIncomeBinding: "App.wife.householdIncome" }); App.husband.get("householdIncome"); // 80000 //Someone get raise. App.husband.set("householdIncome", 90000); App.wife.get("householdIncome"); // 90000

Slide 7

Slide 7 text

Observers App.Person = Ember.Object.extend({ firstName: null, lastName: null, fullName: function () { return this.get("firstName") + " " + this.get("lastName"); }.property("firstName", "lastName"), fullNameDidChange: function () { alert("Changed!"); }.observes("fullName") }); var person = App.Person.create({ firstName: "Paulius", lastName: "Norkus" }); person.set("firstName", "Jonas"); // alerts "Changed!"

Slide 8

Slide 8 text

Templates <h1>{{categoryName}}</h1> <h2>Posts:</h2> <ul> {{#each post in posts}} <li>{{post.title}}</li> {{else}} <p>No posts yet.</p> {{/each}} </ul> Uses Handelbars.js templates with Ember.js helpers

Slide 9

Slide 9 text

Demo

Slide 10

Slide 10 text

Who is using Ember.js?

Slide 11

Slide 11 text

Resources • http://www.emberjs.com • http://discuss.emberjs.com • http://emberwatch.com/ • http://github.com/discourse/discourse • IRC #emberjs

Slide 12

Slide 12 text

Thank You

Slide 13

Slide 13 text

We’re hiring! http://AdDuplex.com/Jobs