introduction to backbone - workshop

26
Backbone.js Introduction / Oren Farhi

Upload: oren-farhi

Post on 08-May-2015

849 views

Category:

Education


1 download

DESCRIPTION

This is the presentation from Tikal's "Introduction to Backbone - Workshop" I gave at http://www.tikalk.com

TRANSCRIPT

Page 1: Introduction to Backbone - Workshop

Backbone.jsIntroduction / Oren Farhi

Page 2: Introduction to Backbone - Workshop

Oren Farhi

Front End Architect, JS Engineer @Tikal

JS Group Leader - Meet, Share, Contribute & Coding

Speaker (Israel & World Wide)

Developing with:

Pure Javascript, Backbone.js, Underscore.js, jQuery, CSS3

github.com/tikalk

@tikalk

Page 3: Introduction to Backbone - Workshop

We help companies build, deliver, deploy, manage and optimize their products.

JAVA JS RoR.NET ALM

“Today we are SURE that we made the right decision, choosing Tikal”

Guy Ben-Porat - Development Manager “ExLibris”

Page 4: Introduction to Backbone - Workshop

Tikal by Numbers

“Actions speak louder than words”Tikal's motto

1600+ Community

Members

150+Blog Posts Last Year

460+Meetup

Members

100+Projects

Last Year

90+Tikal’s

Experts Team

12+ Years old

Page 5: Introduction to Backbone - Workshop

The Past:

JS is the wild westNo code conventionsjQuery bloated codeData & DOM mixedjQuery ajax & callbacks are a bit messyNo Reuse

Most End Result:words and sentences with long selectors and "hanged" functions everywhere

Page 6: Introduction to Backbone - Workshop

The Present: All we have is now

SimplicityOrganization

Focus

Page 7: Introduction to Backbone - Workshop

Backbone Background

Jeremy Ashkenas - Underscore, CoffeescriptDocumentCloud

Dependencies:jquery / zeptounderscore.jsjson2.js ( IE, other without JSON )

Page 8: Introduction to Backbone - Workshop

Backbone is:

MVC library (MIT)StructureRESTful JSON connectorHash Routing EngineEvent DrivenExtended

ModelEventsViewCollectionRouterUtilities - based underscore.jsTemplating Engine - based underscore.js

Page 9: Introduction to Backbone - Workshop

What is it good for?Linkedin Mobile, SoundCloud, Foursquar, Khan Academy, Airbnb, Rdio, HuluStructure for CodeSeparation of Concerns

Modular, Extensible

Reusable Modules

Loose Coupling

Model Driven

Unit Test Ready

M - Backbone.Model

V - _.template

C - Backbone.View / Router

Page 10: Introduction to Backbone - Workshop

This is a backbone.

When used properlyIt keeps one's headOut of one's buttRand Macivor

Page 11: Introduction to Backbone - Workshop

What we're going to do today:

https://github.com/tikalk/backbone-workshop

Page 12: Introduction to Backbone - Workshop

Backbone.Model

Where JSON data is storedREST, Constructor, ManuallyData Change EventsWorks With: Collection, View

Methods:set - validategetescapeclearfetchsave (REST) - parsedestroy (REST)

Page 13: Introduction to Backbone - Workshop

Backbone.Model

Page 14: Introduction to Backbone - Workshop

Backbone.Model - PRACTICE

Model properties: defaults, Model Methods: initialize, set, get

Page 15: Introduction to Backbone - Workshop

Backbone.View

A Controller for a DOM Element (wrapper)Renders Model/Collection to DOM (html)Delegates DOM EventsWorks With: Model, CollectionCan use Any template engine to render html

Methods:render (return this)makeremoveun/delegateEvents

Properties:$ = $el.findel$eloptionsevents

Page 16: Introduction to Backbone - Workshop

Backbone.View

Page 17: Introduction to Backbone - Workshop

Backbone.View - PRACTICE

View properties: events, tagName, className, render

Page 18: Introduction to Backbone - Workshop

_.Underscore.js

Utilities for Javascript (60)Collections, Arrays, Functions, Objects,Uses Browsers Implementation if possibleHigh ExpressivenessWorks With: Backbone, Standalone

Methods:

Collections - each, map, filter, pluck, groupBy

Arrays - without, uniq

Functions - bind, debounce,

Object - keys, values, is-* (Empty, Date, String, Function etc..), has

Utility - template, escape, mixin

Chaining - chain, value

Page 19: Introduction to Backbone - Workshop

_.Underscore.js

Page 20: Introduction to Backbone - Workshop

Backbone.Collection

Collection of ModelsREST, Constructor, ManuallyInherits Change Events from ModelsWorks With: Model, ViewMany utilities methods from underscore.js

Methods:addremovelengthfetchsave (REST) - parsedestroy (REST)+ 28 Underscore methods:map, find, filter, sortBy, groupBy, pluck, invoke ...

Properties:options

Page 21: Introduction to Backbone - Workshop

Backbone.Collection

Page 22: Introduction to Backbone - Workshop

Backbone.Collection - PRACTICE

Page 23: Introduction to Backbone - Workshop

Backbone.Router

Navigation Handling (bookmarks)Listens to url change eventsNatively integrated to Back/ForwardEasy routing handlingWorks With: Backbone.History

Methods:customnavigateroute (create)

Properties:routes (key - value) - (route - handler)

Page 24: Introduction to Backbone - Workshop

Backbone.Router

Page 25: Introduction to Backbone - Workshop

Backbone.Router - PRACTICE

Page 26: Introduction to Backbone - Workshop

Questions?

Backbone - http://documentcloud.github.com/backbone/Underscore - http://documentcloud.github.com/underscoreTikal - http://www.tikalk.com