143
Single Page Application Development with backbone.js and Simple.Web Chris Canal

Single Page Application Development with backbone.js and Simple.Web

Embed Size (px)

Citation preview

Page 1: Single Page Application Development with backbone.js and Simple.Web

Single Page Application Development with

backbone.js and Simple.WebChris Canal

Page 2: Single Page Application Development with backbone.js and Simple.Web

Who am I?• Senior Developer at StormID• Developed our in-house SDK• Does too much Umbraco• Trying to stop my boss from crazy• Being opinionated• Been doing this for too long, 11 years!• Crap at making PowerPoint presentations• Probably wrong 90% of the time, so

please correct me when I made a stupid comment

Page 3: Single Page Application Development with backbone.js and Simple.Web

Agenda

• Introduction• Backbone• Backbone Marionette• Underscore• Handlebars• RequireJS

• Simple.Web

Page 4: Single Page Application Development with backbone.js and Simple.Web

Single Page Applications

Page 5: Single Page Application Development with backbone.js and Simple.Web

Single Page Application?

• A software application• On a single web page• Pretty much exactly what it says on the tin, if it came in a tin

Page 6: Single Page Application Development with backbone.js and Simple.Web

Gmailmail.google.com

Page 7: Single Page Application Development with backbone.js and Simple.Web

Twittertwitter.com

Page 8: Single Page Application Development with backbone.js and Simple.Web

Facebookfacebook.com

Page 9: Single Page Application Development with backbone.js and Simple.Web

Spinspin.com

Page 10: Single Page Application Development with backbone.js and Simple.Web

A Quick Web App History

Page 11: Single Page Application Development with backbone.js and Simple.Web

Web 1.0

Webserver

GET

Page 12: Single Page Application Development with backbone.js and Simple.Web

Web 1.0

Webserver

GET

GET

Page 13: Single Page Application Development with backbone.js and Simple.Web

AJAX, BOOYA

Page 14: Single Page Application Development with backbone.js and Simple.Web
Page 15: Single Page Application Development with backbone.js and Simple.Web

AJAX (Web 2.0?)

Webserver

GET

GET

Page 16: Single Page Application Development with backbone.js and Simple.Web

AJAX (Web 2.0?)

Webserver

GET

GET

Page 17: Single Page Application Development with backbone.js and Simple.Web

AJAX (Web 2.0?)

API

GET

GET

Application

Page 18: Single Page Application Development with backbone.js and Simple.Web
Page 19: Single Page Application Development with backbone.js and Simple.Web
Page 20: Single Page Application Development with backbone.js and Simple.Web

MV*

Page 21: Single Page Application Development with backbone.js and Simple.Web

MV*

• MVPresenter• MVController• MVPresentationModel• MVViewModel• MVHandler

Page 22: Single Page Application Development with backbone.js and Simple.Web

Serverside MV*

Page 23: Single Page Application Development with backbone.js and Simple.Web

Small TalkFirst implentation of MVC

Page 24: Single Page Application Development with backbone.js and Simple.Web

Ruby on RailsMVC

Page 25: Single Page Application Development with backbone.js and Simple.Web

Cake PHPMVC

Page 26: Single Page Application Development with backbone.js and Simple.Web

WebFormsWut?

Page 27: Single Page Application Development with backbone.js and Simple.Web

Castle MonorailMVC

Page 28: Single Page Application Development with backbone.js and Simple.Web

ASP.NET MVCMVC

Page 29: Single Page Application Development with backbone.js and Simple.Web

FubuMVCMVC

Page 30: Single Page Application Development with backbone.js and Simple.Web

Simple.WebMVHandler

Page 31: Single Page Application Development with backbone.js and Simple.Web

Simple.Web

Page 32: Single Page Application Development with backbone.js and Simple.Web

Conventions & Structure

Page 33: Single Page Application Development with backbone.js and Simple.Web

Clientside MV*

Page 34: Single Page Application Development with backbone.js and Simple.Web

YUI

Page 35: Single Page Application Development with backbone.js and Simple.Web

Ember JS

Page 36: Single Page Application Development with backbone.js and Simple.Web

Knockout

Page 37: Single Page Application Development with backbone.js and Simple.Web

AngularJS

Page 38: Single Page Application Development with backbone.js and Simple.Web

Backbone.js

Page 39: Single Page Application Development with backbone.js and Simple.Web

Backbone.js

Page 40: Single Page Application Development with backbone.js and Simple.Web

What is it?

• Event driven MV* Framework

Page 41: Single Page Application Development with backbone.js and Simple.Web

Annotated Source

Page 42: Single Page Application Development with backbone.js and Simple.Web

Github

Page 43: Single Page Application Development with backbone.js and Simple.Web

Who uses Backbone.js?

• Hulu• Foursquare• Stripe• Khan Academy• Wordpress.com• Many more…

Page 44: Single Page Application Development with backbone.js and Simple.Web

Code Structure

• Events• Models• Collections• Views• Router

Page 45: Single Page Application Development with backbone.js and Simple.Web

Eventsonofftrigger

Page 46: Single Page Application Development with backbone.js and Simple.Web

on

Page 47: Single Page Application Development with backbone.js and Simple.Web

off

Page 48: Single Page Application Development with backbone.js and Simple.Web

trigger

Page 49: Single Page Application Development with backbone.js and Simple.Web

Beware memory leaks!

Page 50: Single Page Application Development with backbone.js and Simple.Web

Event Types

• add – model, collection• remove – model, collection• reset – collection• change – model, options• change:[attribute] – model, value, options• destroy – model, collection• sync – model, collection• route:[name] – router• all

Page 51: Single Page Application Development with backbone.js and Simple.Web

Modelsextendconstructor/initializeurl/urlRootdefaultsget/setvalidatetoJSONState!saveand more…

Page 52: Single Page Application Development with backbone.js and Simple.Web

extend

Page 53: Single Page Application Development with backbone.js and Simple.Web

extendOverriding base methods

Page 54: Single Page Application Development with backbone.js and Simple.Web

constructor/initialize

Page 55: Single Page Application Development with backbone.js and Simple.Web

initialize

Page 56: Single Page Application Development with backbone.js and Simple.Web

url/urlRoot

Page 57: Single Page Application Development with backbone.js and Simple.Web

defaults

Page 58: Single Page Application Development with backbone.js and Simple.Web

get/set

Page 59: Single Page Application Development with backbone.js and Simple.Web

validate

Page 60: Single Page Application Development with backbone.js and Simple.Web

toJSON

Page 61: Single Page Application Development with backbone.js and Simple.Web

State!

Page 62: Single Page Application Development with backbone.js and Simple.Web

save

Page 63: Single Page Application Development with backbone.js and Simple.Web

More!

Page 64: Single Page Application Development with backbone.js and Simple.Web

Collectionsmodelurlcreateaddgetwherefetchresetand more…

Page 65: Single Page Application Development with backbone.js and Simple.Web

model

Page 66: Single Page Application Development with backbone.js and Simple.Web

url

Page 67: Single Page Application Development with backbone.js and Simple.Web

create

Page 68: Single Page Application Development with backbone.js and Simple.Web

add

Page 69: Single Page Application Development with backbone.js and Simple.Web

get

Page 70: Single Page Application Development with backbone.js and Simple.Web

where

Page 71: Single Page Application Development with backbone.js and Simple.Web

fetch

Page 72: Single Page Application Development with backbone.js and Simple.Web

reset

Page 73: Single Page Application Development with backbone.js and Simple.Web

More!

Page 74: Single Page Application Development with backbone.js and Simple.Web

Viewsel/tagName/$elrenderremoveevents

Page 75: Single Page Application Development with backbone.js and Simple.Web

el/tagName/$el

Page 76: Single Page Application Development with backbone.js and Simple.Web

render

Page 77: Single Page Application Development with backbone.js and Simple.Web

remove

Page 78: Single Page Application Development with backbone.js and Simple.Web

events

Page 79: Single Page Application Development with backbone.js and Simple.Web

routerroutesRoutenavigateHistory

Page 80: Single Page Application Development with backbone.js and Simple.Web

routes

Page 81: Single Page Application Development with backbone.js and Simple.Web

route

Page 82: Single Page Application Development with backbone.js and Simple.Web

navigate

Page 83: Single Page Application Development with backbone.js and Simple.Web

Demo?

Page 84: Single Page Application Development with backbone.js and Simple.Web

Questions?

Page 85: Single Page Application Development with backbone.js and Simple.Web

Backbone Marionette

Page 86: Single Page Application Development with backbone.js and Simple.Web

What is it?Application Library for Backbone

Page 87: Single Page Application Development with backbone.js and Simple.Web

What does it give you?

• Backbone.Marionette.Application• Backbone.Marionette.AppRouter• Backbone.Marionette.ItemView• Backbone.Marionette.CollectionView• Backbone.Marionette.EventAggregator• And more…

Page 88: Single Page Application Development with backbone.js and Simple.Web

Backbone.Marionette.ApplicationStarting An ApplicationeventsaddInitializerregions

Page 89: Single Page Application Development with backbone.js and Simple.Web

Starting

Page 90: Single Page Application Development with backbone.js and Simple.Web

events

Page 91: Single Page Application Development with backbone.js and Simple.Web

addInitializer

Page 92: Single Page Application Development with backbone.js and Simple.Web

regions

Page 93: Single Page Application Development with backbone.js and Simple.Web

Backbone.Marionette.AppRoutercontroller

Page 94: Single Page Application Development with backbone.js and Simple.Web

controller

Page 95: Single Page Application Development with backbone.js and Simple.Web

Backbone.Marionette.ItemViewon*eventsserializeData

Page 96: Single Page Application Development with backbone.js and Simple.Web

On*

Page 97: Single Page Application Development with backbone.js and Simple.Web

events

Page 98: Single Page Application Development with backbone.js and Simple.Web

serializeData

Page 99: Single Page Application Development with backbone.js and Simple.Web

Backbone.Marionette.CollectionViewitemViewemptyViewon*events

Page 100: Single Page Application Development with backbone.js and Simple.Web

itemView

Page 101: Single Page Application Development with backbone.js and Simple.Web

emptyView

Page 102: Single Page Application Development with backbone.js and Simple.Web

on*

Page 103: Single Page Application Development with backbone.js and Simple.Web

events

Page 104: Single Page Application Development with backbone.js and Simple.Web

Backbone.Marionette.EventAggregator

Page 105: Single Page Application Development with backbone.js and Simple.Web

Demo?

Page 106: Single Page Application Development with backbone.js and Simple.Web

Questions?

Page 107: Single Page Application Development with backbone.js and Simple.Web

Underscore

Page 108: Single Page Application Development with backbone.js and Simple.Web

What is it?Batman utility belt

Page 109: Single Page Application Development with backbone.js and Simple.Web

Handlebars

Page 110: Single Page Application Development with backbone.js and Simple.Web

What is it?Mustache templating implemetation

Page 111: Single Page Application Development with backbone.js and Simple.Web

Basic

Page 112: Single Page Application Development with backbone.js and Simple.Web

Compiling

Page 113: Single Page Application Development with backbone.js and Simple.Web

Using it with Backbone.Marionette

Page 114: Single Page Application Development with backbone.js and Simple.Web

RequireJS

Page 115: Single Page Application Development with backbone.js and Simple.Web

What is it?Clientside Dependency ManagementAMD/CommonJS implentation

Page 116: Single Page Application Development with backbone.js and Simple.Web

What does it give you?

• Dependency Management

Page 117: Single Page Application Development with backbone.js and Simple.Web

Config

Page 118: Single Page Application Development with backbone.js and Simple.Web

Config

Page 119: Single Page Application Development with backbone.js and Simple.Web

require()

Page 120: Single Page Application Development with backbone.js and Simple.Web

define()

Page 121: Single Page Application Development with backbone.js and Simple.Web

Text plugin

Page 122: Single Page Application Development with backbone.js and Simple.Web

Using it with Backbone.Marionette

Page 123: Single Page Application Development with backbone.js and Simple.Web

r.js

Page 124: Single Page Application Development with backbone.js and Simple.Web

What is it?

• Combines related scripts together into build layers and minifies them via UglifyJS• Optimizes CSS by inlining CSS files referenced by @import and

removing comments.

Page 125: Single Page Application Development with backbone.js and Simple.Web

Getting it…

• You have Node.js installed, yea?• npm install –g requires• node r.js path/tp/buildscript.js

Page 126: Single Page Application Development with backbone.js and Simple.Web

Config

Page 127: Single Page Application Development with backbone.js and Simple.Web

Config

Page 128: Single Page Application Development with backbone.js and Simple.Web

Demo?

Page 129: Single Page Application Development with backbone.js and Simple.Web

Questions?

Page 130: Single Page Application Development with backbone.js and Simple.Web

Simple.Web

Page 131: Single Page Application Development with backbone.js and Simple.Web

What is it?SOLID Driven RESTful web frameworkModel-View-Hander

Page 132: Single Page Application Development with backbone.js and Simple.Web

What does it give you?

• Proper Separation on Concerns – One class per action• Easily Testable• SOLID Compliant

Page 133: Single Page Application Development with backbone.js and Simple.Web

Interfaces

• IGet• IPost• IPost<T>• IDelete• IPut• IPut<T>• IOutput• And more…

Page 134: Single Page Application Development with backbone.js and Simple.Web

IGet

Page 135: Single Page Application Development with backbone.js and Simple.Web

IPost

Page 136: Single Page Application Development with backbone.js and Simple.Web

IPost<T>

Page 137: Single Page Application Development with backbone.js and Simple.Web

IDelete

Page 138: Single Page Application Development with backbone.js and Simple.Web

IPut<T>

Page 139: Single Page Application Development with backbone.js and Simple.Web

IOutput<T>

Page 140: Single Page Application Development with backbone.js and Simple.Web

DemoWiring it all up!

Page 141: Single Page Application Development with backbone.js and Simple.Web

Questions?

Page 142: Single Page Application Development with backbone.js and Simple.Web

Resources

• http://backbonetraining.net/resources Loads of Backbone resources• https://github.com/markrendle/Simple.Web• http://blog.markrendle.net/2012/06/01/simple-web/

Page 143: Single Page Application Development with backbone.js and Simple.Web

Thanks!