Backbone.js in a Php Environment
Backbone.js in a Php Environment
Backbone.js in a Php Environment
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