știe MVC sa fie populară insa nu prea recentă sa știe chestii fancy gen: binding-uri observere rutare sa nu necesite HTML/nu fie foarte declarativ sa nu fie împrăștiat GeekMeet #12, Cluj-Napoca, Transilvania 4 / 19 20 Octombrie, 2012
știe MVC sa fie populară insa nu prea recentă sa știe chestii fancy gen: binding-uri observere rutare sa nu necesite HTML/nu fie foarte declarativ sa nu fie împrăștiat GeekMeet #12, Cluj-Napoca, Transilvania 4 / 19 20 Octombrie, 2012
știe MVC sa fie populară insa nu prea recentă sa știe chestii fancy gen: binding-uri observere rutare sa nu necesite HTML/nu fie foarte declarativ sa nu fie împrăștiat GeekMeet #12, Cluj-Napoca, Transilvania 4 / 19 20 Octombrie, 2012
știe MVC sa fie populară insa nu prea recentă sa știe chestii fancy gen: binding-uri observere rutare sa nu necesite HTML/nu fie foarte declarativ sa nu fie împrăștiat GeekMeet #12, Cluj-Napoca, Transilvania 4 / 19 20 Octombrie, 2012
știe MVC sa fie populară insa nu prea recentă sa știe chestii fancy gen: binding-uri observere rutare sa nu necesite HTML/nu fie foarte declarativ sa nu fie împrăștiat GeekMeet #12, Cluj-Napoca, Transilvania 4 / 19 20 Octombrie, 2012
știe MVC sa fie populară insa nu prea recentă sa știe chestii fancy gen: binding-uri observere rutare sa nu necesite HTML/nu fie foarte declarativ sa nu fie împrăștiat GeekMeet #12, Cluj-Napoca, Transilvania 4 / 19 20 Octombrie, 2012
știe MVC sa fie populară insa nu prea recentă sa știe chestii fancy gen: binding-uri observere rutare sa nu necesite HTML/nu fie foarte declarativ sa nu fie împrăștiat GeekMeet #12, Cluj-Napoca, Transilvania 4 / 19 20 Octombrie, 2012
știe MVC sa fie populară insa nu prea recentă sa știe chestii fancy gen: binding-uri observere rutare sa nu necesite HTML/nu fie foarte declarativ sa nu fie împrăștiat GeekMeet #12, Cluj-Napoca, Transilvania 4 / 19 20 Octombrie, 2012
știe MVC sa fie populară insa nu prea recentă sa știe chestii fancy gen: binding-uri observere rutare sa nu necesite HTML/nu fie foarte declarativ sa nu fie împrăștiat GeekMeet #12, Cluj-Napoca, Transilvania 4 / 19 20 Octombrie, 2012
multe librării (framework) JavaScript în mare măsură MV* urmează strict un set de specificații se propune să oferă și teste (însă se mai lucrează aici) are nișe persoane interesante la colaboratori Addy Osmani Sindre Sorhus colaborează cu autorii/dezvoltatorii de bază din comunitățile populare este un proiect educațional extraordinar http://todomvc.com GeekMeet #12, Cluj-Napoca, Transilvania 5 / 19 20 Octombrie, 2012
multe librării (framework) JavaScript în mare măsură MV* urmează strict un set de specificații se propune să oferă și teste (însă se mai lucrează aici) are nișe persoane interesante la colaboratori Addy Osmani Sindre Sorhus colaborează cu autorii/dezvoltatorii de bază din comunitățile populare este un proiect educațional extraordinar http://todomvc.com GeekMeet #12, Cluj-Napoca, Transilvania 5 / 19 20 Octombrie, 2012
multe librării (framework) JavaScript în mare măsură MV* urmează strict un set de specificații se propune să oferă și teste (însă se mai lucrează aici) are nișe persoane interesante la colaboratori Addy Osmani Sindre Sorhus colaborează cu autorii/dezvoltatorii de bază din comunitățile populare este un proiect educațional extraordinar http://todomvc.com GeekMeet #12, Cluj-Napoca, Transilvania 5 / 19 20 Octombrie, 2012
multe librării (framework) JavaScript în mare măsură MV* urmează strict un set de specificații se propune să oferă și teste (însă se mai lucrează aici) are nișe persoane interesante la colaboratori Addy Osmani Sindre Sorhus colaborează cu autorii/dezvoltatorii de bază din comunitățile populare este un proiect educațional extraordinar http://todomvc.com GeekMeet #12, Cluj-Napoca, Transilvania 5 / 19 20 Octombrie, 2012
multe librării (framework) JavaScript în mare măsură MV* urmează strict un set de specificații se propune să oferă și teste (însă se mai lucrează aici) are nișe persoane interesante la colaboratori Addy Osmani Sindre Sorhus colaborează cu autorii/dezvoltatorii de bază din comunitățile populare este un proiect educațional extraordinar http://todomvc.com GeekMeet #12, Cluj-Napoca, Transilvania 5 / 19 20 Octombrie, 2012
multe librării (framework) JavaScript în mare măsură MV* urmează strict un set de specificații se propune să oferă și teste (însă se mai lucrează aici) are nișe persoane interesante la colaboratori Addy Osmani Sindre Sorhus colaborează cu autorii/dezvoltatorii de bază din comunitățile populare este un proiect educațional extraordinar http://todomvc.com GeekMeet #12, Cluj-Napoca, Transilvania 5 / 19 20 Octombrie, 2012
multe librării (framework) JavaScript în mare măsură MV* urmează strict un set de specificații se propune să oferă și teste (însă se mai lucrează aici) are nișe persoane interesante la colaboratori Addy Osmani Sindre Sorhus colaborează cu autorii/dezvoltatorii de bază din comunitățile populare este un proiect educațional extraordinar http://todomvc.com GeekMeet #12, Cluj-Napoca, Transilvania 5 / 19 20 Octombrie, 2012
multe librării (framework) JavaScript în mare măsură MV* urmează strict un set de specificații se propune să oferă și teste (însă se mai lucrează aici) are nișe persoane interesante la colaboratori Addy Osmani Sindre Sorhus colaborează cu autorii/dezvoltatorii de bază din comunitățile populare este un proiect educațional extraordinar http://todomvc.com GeekMeet #12, Cluj-Napoca, Transilvania 5 / 19 20 Octombrie, 2012
multe librării (framework) JavaScript în mare măsură MV* urmează strict un set de specificații se propune să oferă și teste (însă se mai lucrează aici) are nișe persoane interesante la colaboratori Addy Osmani Sindre Sorhus colaborează cu autorii/dezvoltatorii de bază din comunitățile populare este un proiect educațional extraordinar http://todomvc.com GeekMeet #12, Cluj-Napoca, Transilvania 5 / 19 20 Octombrie, 2012
că are convenții (cough-cough rails) pentru că e doar o librărie, nu zece! pentru că e fun și mai jos voi încerca să demonstrez acest lucru http://emberjs.com GeekMeet #12, Cluj-Napoca, Transilvania 6 / 19 20 Octombrie, 2012
că are convenții (cough-cough rails) pentru că e doar o librărie, nu zece! pentru că e fun și mai jos voi încerca să demonstrez acest lucru http://emberjs.com GeekMeet #12, Cluj-Napoca, Transilvania 6 / 19 20 Octombrie, 2012
că are convenții (cough-cough rails) pentru că e doar o librărie, nu zece! pentru că e fun și mai jos voi încerca să demonstrez acest lucru http://emberjs.com GeekMeet #12, Cluj-Napoca, Transilvania 6 / 19 20 Octombrie, 2012
că are convenții (cough-cough rails) pentru că e doar o librărie, nu zece! pentru că e fun și mai jos voi încerca să demonstrez acest lucru http://emberjs.com GeekMeet #12, Cluj-Napoca, Transilvania 6 / 19 20 Octombrie, 2012
pentru a trezi interesul vostru unde următorul pas ar fi să vă jucați cu codul din prezentare și să-i dați o șansă proiectului Ember.js din suita TodoMVC este loc de niște contribuții cum ar fi mai multe teste actualizat cu modificările de API rescris Todo.js (modelul) GeekMeet #12, Cluj-Napoca, Transilvania 7 / 19 20 Octombrie, 2012
pentru a trezi interesul vostru unde următorul pas ar fi să vă jucați cu codul din prezentare și să-i dați o șansă proiectului Ember.js din suita TodoMVC este loc de niște contribuții cum ar fi mai multe teste actualizat cu modificările de API rescris Todo.js (modelul) GeekMeet #12, Cluj-Napoca, Transilvania 7 / 19 20 Octombrie, 2012
pentru a trezi interesul vostru unde următorul pas ar fi să vă jucați cu codul din prezentare și să-i dați o șansă proiectului Ember.js din suita TodoMVC este loc de niște contribuții cum ar fi mai multe teste actualizat cu modificările de API rescris Todo.js (modelul) GeekMeet #12, Cluj-Napoca, Transilvania 7 / 19 20 Octombrie, 2012
pentru a trezi interesul vostru unde următorul pas ar fi să vă jucați cu codul din prezentare și să-i dați o șansă proiectului Ember.js din suita TodoMVC este loc de niște contribuții cum ar fi mai multe teste actualizat cu modificările de API rescris Todo.js (modelul) GeekMeet #12, Cluj-Napoca, Transilvania 7 / 19 20 Octombrie, 2012
pentru a trezi interesul vostru unde următorul pas ar fi să vă jucați cu codul din prezentare și să-i dați o șansă proiectului Ember.js din suita TodoMVC este loc de niște contribuții cum ar fi mai multe teste actualizat cu modificările de API rescris Todo.js (modelul) GeekMeet #12, Cluj-Napoca, Transilvania 7 / 19 20 Octombrie, 2012
pentru a trezi interesul vostru unde următorul pas ar fi să vă jucați cu codul din prezentare și să-i dați o șansă proiectului Ember.js din suita TodoMVC este loc de niște contribuții cum ar fi mai multe teste actualizat cu modificările de API rescris Todo.js (modelul) GeekMeet #12, Cluj-Napoca, Transilvania 7 / 19 20 Octombrie, 2012
pentru a trezi interesul vostru unde următorul pas ar fi să vă jucați cu codul din prezentare și să-i dați o șansă proiectului Ember.js din suita TodoMVC este loc de niște contribuții cum ar fi mai multe teste actualizat cu modificările de API rescris Todo.js (modelul) GeekMeet #12, Cluj-Napoca, Transilvania 7 / 19 20 Octombrie, 2012
musai! rootElement e pentru a specifica unde să-și facă de cap aplicația la {{outlet}} se leagă connectOutlets 1 var App = Ember.Application.create({ 2 VERSION: ’0.1.0’, 3 rootElement: ’#content’, 4 ApplicationController: Ember.Controller.extend(), 5 ArticleController: Ember.Controller.extend(), 6 ApplicationView: Ember.View.extend({ 7 template: Ember.Handlebars.compile( ’{{outlet}}’ ) 8 }) 9 // The rest of the Models/Controllers/Views 10 // will self append to this namespace 11 }); GeekMeet #12, Cluj-Napoca, Transilvania 8 / 19 20 Octombrie, 2012
musai! rootElement e pentru a specifica unde să-și facă de cap aplicația la {{outlet}} se leagă connectOutlets 1 var App = Ember.Application.create({ 2 VERSION: ’0.1.0’, 3 rootElement: ’#content’, 4 ApplicationController: Ember.Controller.extend(), 5 ArticleController: Ember.Controller.extend(), 6 ApplicationView: Ember.View.extend({ 7 template: Ember.Handlebars.compile( ’{{outlet}}’ ) 8 }) 9 // The rest of the Models/Controllers/Views 10 // will self append to this namespace 11 }); GeekMeet #12, Cluj-Napoca, Transilvania 8 / 19 20 Octombrie, 2012
musai! rootElement e pentru a specifica unde să-și facă de cap aplicația la {{outlet}} se leagă connectOutlets 1 var App = Ember.Application.create({ 2 VERSION: ’0.1.0’, 3 rootElement: ’#content’, 4 ApplicationController: Ember.Controller.extend(), 5 ArticleController: Ember.Controller.extend(), 6 ApplicationView: Ember.View.extend({ 7 template: Ember.Handlebars.compile( ’{{outlet}}’ ) 8 }) 9 // The rest of the Models/Controllers/Views 10 // will self append to this namespace 11 }); GeekMeet #12, Cluj-Napoca, Transilvania 8 / 19 20 Octombrie, 2012
musai! rootElement e pentru a specifica unde să-și facă de cap aplicația la {{outlet}} se leagă connectOutlets 1 var App = Ember.Application.create({ 2 VERSION: ’0.1.0’, 3 rootElement: ’#content’, 4 ApplicationController: Ember.Controller.extend(), 5 ArticleController: Ember.Controller.extend(), 6 ApplicationView: Ember.View.extend({ 7 template: Ember.Handlebars.compile( ’{{outlet}}’ ) 8 }) 9 // The rest of the Models/Controllers/Views 10 // will self append to this namespace 11 }); GeekMeet #12, Cluj-Napoca, Transilvania 8 / 19 20 Octombrie, 2012
definește proprietăți computate (atribute dinamice) este valabil pentru oricare componentă din Ember.js init este constructorul (new, initialize, construct()) metodele clasei find face parte din convenție și este apelat de rută dacă e cazul all este la fel parte din convenție, apelat la fel de rută dacă e cazul 1 var Article = Ember.Object.extend({ 2 id: null, 3 title: null, 4 content: null, 5 6 // Handle Generation of the slug as a property 7 slug: function() { 8 var slug = this.get( ’title’ ).toLowerCase(); 9 return slug.replace( /\s+?/g, ’-’ ); 10 }.property( ’title’ ).cacheable(), 11 12 // Constructor 13 init: function() { 14 var id = Date.now(); 15 24 Article.reopenClass({ 25 db: {}, 26 27 find: function( id ) { 28 return this.db[ id ]; 29 }, 30 31 all: function() { 32 return this.db; 33 } 34 35 }); GeekMeet #12, Cluj-Napoca, Transilvania 10 / 19 20 Octombrie, 2012
definește proprietăți computate (atribute dinamice) este valabil pentru oricare componentă din Ember.js init este constructorul (new, initialize, construct()) metodele clasei find face parte din convenție și este apelat de rută dacă e cazul all este la fel parte din convenție, apelat la fel de rută dacă e cazul 1 var Article = Ember.Object.extend({ 2 id: null, 3 title: null, 4 content: null, 5 6 // Handle Generation of the slug as a property 7 slug: function() { 8 var slug = this.get( ’title’ ).toLowerCase(); 9 return slug.replace( /\s+?/g, ’-’ ); 10 }.property( ’title’ ).cacheable(), 11 12 // Constructor 13 init: function() { 14 var id = Date.now(); 15 24 Article.reopenClass({ 25 db: {}, 26 27 find: function( id ) { 28 return this.db[ id ]; 29 }, 30 31 all: function() { 32 return this.db; 33 } 34 35 }); GeekMeet #12, Cluj-Napoca, Transilvania 10 / 19 20 Octombrie, 2012
definește proprietăți computate (atribute dinamice) este valabil pentru oricare componentă din Ember.js init este constructorul (new, initialize, construct()) metodele clasei find face parte din convenție și este apelat de rută dacă e cazul all este la fel parte din convenție, apelat la fel de rută dacă e cazul 1 var Article = Ember.Object.extend({ 2 id: null, 3 title: null, 4 content: null, 5 6 // Handle Generation of the slug as a property 7 slug: function() { 8 var slug = this.get( ’title’ ).toLowerCase(); 9 return slug.replace( /\s+?/g, ’-’ ); 10 }.property( ’title’ ).cacheable(), 11 12 // Constructor 13 init: function() { 14 var id = Date.now(); 15 24 Article.reopenClass({ 25 db: {}, 26 27 find: function( id ) { 28 return this.db[ id ]; 29 }, 30 31 all: function() { 32 return this.db; 33 } 34 35 }); GeekMeet #12, Cluj-Napoca, Transilvania 10 / 19 20 Octombrie, 2012
definește proprietăți computate (atribute dinamice) este valabil pentru oricare componentă din Ember.js init este constructorul (new, initialize, construct()) metodele clasei find face parte din convenție și este apelat de rută dacă e cazul all este la fel parte din convenție, apelat la fel de rută dacă e cazul 1 var Article = Ember.Object.extend({ 2 id: null, 3 title: null, 4 content: null, 5 6 // Handle Generation of the slug as a property 7 slug: function() { 8 var slug = this.get( ’title’ ).toLowerCase(); 9 return slug.replace( /\s+?/g, ’-’ ); 10 }.property( ’title’ ).cacheable(), 11 12 // Constructor 13 init: function() { 14 var id = Date.now(); 15 24 Article.reopenClass({ 25 db: {}, 26 27 find: function( id ) { 28 return this.db[ id ]; 29 }, 30 31 all: function() { 32 return this.db; 33 } 34 35 }); GeekMeet #12, Cluj-Napoca, Transilvania 10 / 19 20 Octombrie, 2012
definește proprietăți computate (atribute dinamice) este valabil pentru oricare componentă din Ember.js init este constructorul (new, initialize, construct()) metodele clasei find face parte din convenție și este apelat de rută dacă e cazul all este la fel parte din convenție, apelat la fel de rută dacă e cazul 1 var Article = Ember.Object.extend({ 2 id: null, 3 title: null, 4 content: null, 5 6 // Handle Generation of the slug as a property 7 slug: function() { 8 var slug = this.get( ’title’ ).toLowerCase(); 9 return slug.replace( /\s+?/g, ’-’ ); 10 }.property( ’title’ ).cacheable(), 11 12 // Constructor 13 init: function() { 14 var id = Date.now(); 15 24 Article.reopenClass({ 25 db: {}, 26 27 find: function( id ) { 28 return this.db[ id ]; 29 }, 30 31 all: function() { 32 return this.db; 33 } 34 35 }); GeekMeet #12, Cluj-Napoca, Transilvania 10 / 19 20 Octombrie, 2012
definește proprietăți computate (atribute dinamice) este valabil pentru oricare componentă din Ember.js init este constructorul (new, initialize, construct()) metodele clasei find face parte din convenție și este apelat de rută dacă e cazul all este la fel parte din convenție, apelat la fel de rută dacă e cazul 1 var Article = Ember.Object.extend({ 2 id: null, 3 title: null, 4 content: null, 5 6 // Handle Generation of the slug as a property 7 slug: function() { 8 var slug = this.get( ’title’ ).toLowerCase(); 9 return slug.replace( /\s+?/g, ’-’ ); 10 }.property( ’title’ ).cacheable(), 11 12 // Constructor 13 init: function() { 14 var id = Date.now(); 15 24 Article.reopenClass({ 25 db: {}, 26 27 find: function( id ) { 28 return this.db[ id ]; 29 }, 30 31 all: function() { 32 return this.db; 33 } 34 35 }); GeekMeet #12, Cluj-Napoca, Transilvania 10 / 19 20 Octombrie, 2012
definește proprietăți computate (atribute dinamice) este valabil pentru oricare componentă din Ember.js init este constructorul (new, initialize, construct()) metodele clasei find face parte din convenție și este apelat de rută dacă e cazul all este la fel parte din convenție, apelat la fel de rută dacă e cazul 1 var Article = Ember.Object.extend({ 2 id: null, 3 title: null, 4 content: null, 5 6 // Handle Generation of the slug as a property 7 slug: function() { 8 var slug = this.get( ’title’ ).toLowerCase(); 9 return slug.replace( /\s+?/g, ’-’ ); 10 }.property( ’title’ ).cacheable(), 11 12 // Constructor 13 init: function() { 14 var id = Date.now(); 15 24 Article.reopenClass({ 25 db: {}, 26 27 find: function( id ) { 28 return this.db[ id ]; 29 }, 30 31 all: function() { 32 return this.db; 33 } 34 35 }); GeekMeet #12, Cluj-Napoca, Transilvania 10 / 19 20 Octombrie, 2012
orice alt limbaj de programare (discutabil Ruby), deci nu ai scuze pentru a nu scrie teste! GeekMeet #12, Cluj-Napoca, Transilvania 14 / 19 20 Octombrie, 2012
este doar o librărie, nu zece! pentru cowboys, vezi alte opțiuni tot timpul folosiți unelte pentru a câștiga timp, in cazul nostru, Phantom.js testele de browser pot fi rulate pragmatic pentru a câștiga timp pentru a întreține proiectul sănătos, folosiți un serviciu de CI (integrare continuă) exemplu: guard-phantomjs-jasmine http://pivotal.github.com/jasmine/ GeekMeet #12, Cluj-Napoca, Transilvania 15 / 19 20 Octombrie, 2012
este doar o librărie, nu zece! pentru cowboys, vezi alte opțiuni tot timpul folosiți unelte pentru a câștiga timp, in cazul nostru, Phantom.js testele de browser pot fi rulate pragmatic pentru a câștiga timp pentru a întreține proiectul sănătos, folosiți un serviciu de CI (integrare continuă) exemplu: guard-phantomjs-jasmine http://pivotal.github.com/jasmine/ GeekMeet #12, Cluj-Napoca, Transilvania 15 / 19 20 Octombrie, 2012
este doar o librărie, nu zece! pentru cowboys, vezi alte opțiuni tot timpul folosiți unelte pentru a câștiga timp, in cazul nostru, Phantom.js testele de browser pot fi rulate pragmatic pentru a câștiga timp pentru a întreține proiectul sănătos, folosiți un serviciu de CI (integrare continuă) exemplu: guard-phantomjs-jasmine http://pivotal.github.com/jasmine/ GeekMeet #12, Cluj-Napoca, Transilvania 15 / 19 20 Octombrie, 2012
este doar o librărie, nu zece! pentru cowboys, vezi alte opțiuni tot timpul folosiți unelte pentru a câștiga timp, in cazul nostru, Phantom.js testele de browser pot fi rulate pragmatic pentru a câștiga timp pentru a întreține proiectul sănătos, folosiți un serviciu de CI (integrare continuă) exemplu: guard-phantomjs-jasmine http://pivotal.github.com/jasmine/ GeekMeet #12, Cluj-Napoca, Transilvania 15 / 19 20 Octombrie, 2012
este doar o librărie, nu zece! pentru cowboys, vezi alte opțiuni tot timpul folosiți unelte pentru a câștiga timp, in cazul nostru, Phantom.js testele de browser pot fi rulate pragmatic pentru a câștiga timp pentru a întreține proiectul sănătos, folosiți un serviciu de CI (integrare continuă) exemplu: guard-phantomjs-jasmine http://pivotal.github.com/jasmine/ GeekMeet #12, Cluj-Napoca, Transilvania 15 / 19 20 Octombrie, 2012
este doar o librărie, nu zece! pentru cowboys, vezi alte opțiuni tot timpul folosiți unelte pentru a câștiga timp, in cazul nostru, Phantom.js testele de browser pot fi rulate pragmatic pentru a câștiga timp pentru a întreține proiectul sănătos, folosiți un serviciu de CI (integrare continuă) exemplu: guard-phantomjs-jasmine http://pivotal.github.com/jasmine/ GeekMeet #12, Cluj-Napoca, Transilvania 15 / 19 20 Octombrie, 2012