13.07.2015 Views

Backbone.js in a Php Environment

Backbone.js in a Php Environment

Backbone.js in a Php Environment

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Booklist Example03/03/13 Midwest <strong>Php</strong> 10


<strong>Backbone</strong>.Events●●●●●Mix<strong>in</strong> module – can be added to any objectB<strong>in</strong>d, trigger, and unb<strong>in</strong>dEvents are str<strong>in</strong>gs (eg. “change”)Trigger can pass argumentsChanges to data models can trigger automaticrefresh of views03/03/13 Midwest <strong>Php</strong> 11


<strong>Backbone</strong>.Eventsvar object = {};_.extend(object, <strong>Backbone</strong>.Events);object.b<strong>in</strong>d(“poke”, function(msg) {alert(“Just got poked: “+msg); });object.trigger(“poke”, “hello...”);03/03/13 Midwest <strong>Php</strong> 12


<strong>Backbone</strong>.Model●●●●Heart of the applicationData + logic (conversions, validations,computed properties, access control, …)Create new model by extend<strong>in</strong>g<strong>Backbone</strong>.ModelCreate <strong>in</strong>stance with new03/03/13 Midwest <strong>Php</strong> 13


<strong>Backbone</strong>.Modelvar Book = <strong>Backbone</strong>.Model.extend({<strong>in</strong>itialize: function() { // do someth<strong>in</strong>g},defaults: { loc : '', title : '', author : ''},urlRoot: '/booklist/db.php/'});var book = new Book;03/03/13 Midwest <strong>Php</strong> 14


<strong>Backbone</strong>.Model●●Properties●●●model.id – unique server idmodel.cid – client idmodel.defaults – default attribute valuesMethods●●●●Initialize() - called on creationget(attribute) - getterset(attributes) - settervalidate() - validation03/03/13 Midwest <strong>Php</strong> 15


<strong>Backbone</strong>.Model●●More methods●●●●fetch()save()destroy()toJSON()Events●●change, destroy, errorchange event can be bound to render a view03/03/13 Midwest <strong>Php</strong> 16


Server Interaction●●Makes RESTful calls to serverCRUD (create,read,update,delete)● Create → POST server/collection/id● Read → GET server/model/id●●●Update → PUTDelete → DELETEData passed us<strong>in</strong>g JSON encod<strong>in</strong>g03/03/13 Midwest <strong>Php</strong> 17


Example Requests●●●●●METHOD host/table/idGET http://myserver/customer/16GET http://myserver/salesclassPOST http://myserver/paymentDELETE http://myserver/appo<strong>in</strong>tment/213703/03/13 Midwest <strong>Php</strong> 18


<strong>Backbone</strong>.Collection●Ordered set of models●Can listen for events on any model●Create by extend<strong>in</strong>g <strong>Backbone</strong>.CollectionCreate an <strong>in</strong>stance us<strong>in</strong>g new●03/03/13 Midwest <strong>Php</strong> 19


<strong>Backbone</strong>.Collectionvar Booklist = <strong>Backbone</strong>.Collection.extend({model : Book,url : '/phpdemo/db.php'});var booklist = new Booklist;03/03/13 Midwest <strong>Php</strong> 20


<strong>Backbone</strong>.Collection●Methods●●●●●●add()remove()get(id)getByCid(cid)Comparator – order<strong>in</strong>g functionUses underscore.<strong>js</strong> for iteration methods03/03/13 Midwest <strong>Php</strong> 21


<strong>Backbone</strong>.View●●●●●●Control piece that renders a viewExtend <strong>Backbone</strong>.View to create new viewUse new to create an <strong>in</strong>stanceView.el – associated DOM element ($el)<strong>in</strong>itialize() functionrender() function●$(selector) – locally scoped jQuery03/03/13 Midwest <strong>Php</strong> 22


<strong>Backbone</strong>.View03/03/13 Midwest <strong>Php</strong> 23


underscore templates●●●_.template(“text”) returns a template functionwhich merges properties <strong>in</strong>to the textCan embed template <strong>in</strong> dummy script tag● or ● template1 = _.template(“Hi ”);●result = template1({ name : “bob”});03/03/13 Midwest <strong>Php</strong> 24


add.tmpl03/03/13 Midwest <strong>Php</strong> 25


<strong>Backbone</strong>.Router●●●●Route client side pages and connect them toactions and eventsInterfaces with hashchange eventsReacts to history navigationNeed to be aware of possible server<strong>in</strong>teractions03/03/13 Midwest <strong>Php</strong> 26


<strong>Backbone</strong>.Router03/03/13 Midwest <strong>Php</strong> 27


Booklist App●server●●<strong>in</strong>dex.phpdb.php●client-side●●booklist.<strong>js</strong>templates03/03/13 Midwest <strong>Php</strong> 28


<strong>in</strong>dex.php03/03/13 Midwest <strong>Php</strong> 29


db.php03/03/13 Midwest <strong>Php</strong> 30


db.php - cont<strong>in</strong>ued03/03/13 Midwest <strong>Php</strong> 31


db.php - cont<strong>in</strong>ued03/03/13 Midwest <strong>Php</strong> 32


References●●<strong>Backbone</strong>.<strong>js</strong> Applications (Early Access), Addy Osmani, O'Reilly(2012)<strong>Backbone</strong>.<strong>js</strong>: Basics & Beyond, Sarah Mei, Fluent2012 video,O'Reilly (2012)● Javascript Master Class, Douglas Crockford, O'Reilly Media (2009)● Javascript The Good Parts, Douglas Crockford, O'Reilly (2008)● Javascript Web Applications, Alex MacCaw, O'Reilly (2011)●●Recipes With <strong>Backbone</strong>, Nick Gauthier and Chris Strom, eee_c(2012)Secrets of Javascript N<strong>in</strong>jas, John Resig and Bear Bibeault, Mann<strong>in</strong>g(2012)03/03/13 Midwest <strong>Php</strong> 33


03/03/13 Midwest <strong>Php</strong> 34

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!