Building Sinle Page Application With jQuery's Best Friends

SPA   single page application

DocumentCloud's  Backbone.js   Underscore.js  LAB.js and jQuery

templating   to name but a few.

is a three-level bookmarkable image  gallery.

Dustin Diaz's CacheProvider

JSDoc  Toolkit

SPAs are web applications  or websites which persistenly run in the same page

without requiring a reload fr futher navigation.

All of the code needed for your initial load in these applications is driven b

by eiter local data or data rtrieved from a web server on demand , such as

any additional data required from hyour app that might be driven by uer acions

The basic idea behind an SPA is that regardless of whatinteractions your users might have with the application

Why better than Multi-pageApplications

SPAs typically contrast from classical

page hanges are regular and the browser is oftern asked to fetch new content from the server and thn reload to fulfil user requests.

is a way of disrupting the user experience quite ba

changes of application state re handled using approachs such as

XHR calls, making the user experience a lot more

fluid.

consider the idea of state sequence to be equivlent to the concept o pages. Apartical change

implies a change of state in the same way a change of navigation

in a server-side app results in a change of page

How Will Today's App Approach SEO, Hash Routing

and Graceful Degradation?

In today's tutorial, we'll be leveraging the jQuery templating plugin to handle rendering our Backbone

views ad using hash-based routing for the URLs;

normally, without any additional work done , this would

simply result in a blank pag being visible to both search bots  and users

with JS switched off.

So, how do we handle SEO hen bots don;t correctly follow JS powered routes?

How do we also provide an experience for users with JS copletly diabled   In

my opinion the solution to hash-bang/based URLs and

graceful degradatio lie in the same basket.

Backbone.js  and Underscore.js

Collections

Ordeed Sets of Models      Views   Render HTML/css wth JS ttemplating

Models

Interactive Data Domain-specific methods     Controllers   Methods For Routing URL Fragments

a structure fro your cde  where you don't have to tie data so heavily to the DOM

Anoher userful feature is that whn your Backbone models change, te views representing the underlying data

can be notified ,,  causing tem to re-render.

Well it's basically a utility-belt library that provides a lot of the functional support that you would expect in something like Ruby    each, map, isEmpty isElement and more

Going bac toBackbone  views can be created by extending Bacbone view and passing in options models collections etc .  You can als specify a render function on the view to set it up with templating

Client-Side Templating with the jQuery Templating Pluin

create simple client-side teplates that are easily re-usable where templates are written in HTML withtemplate tags whist jQUery code is used for performing the actual data poluplation

var albums = [

{Title:"My Vacation In Malibu", AlbumYear:"1993"},

{Title:"A Trip To the Sea-side", AlbumYear:"1992"}

];

 

var template_markup = "

<ul>

  <li><b>${Title}</b>(${AlbumYear})</li>

<ul>

";

 

$.template("albumTemplate",template_markup);

$.tmpl("albumTemplate",albms).appendTo("#albumList")

LAB.js   Asynchronous   Script   Loading

Kyle   Simpson's LABjs    Loading And Blocking JavaScript   is a great general purpose scrit loader hic allows you to load Scripts in parallel as the browser allows.

.wait()    in your chain .  

$LAB

.script("jquery.js").wait()

.script("")

.script("relies.onabove.depenccy.js").wait()

.script("app.js");

Today's Single-Page MVC Gallery Appliation

Introduction

Backbone  will be used to provide a taste of MVC

architecture to the ap,Underscore  for it's utility functions

LAB.js for asynchronous script loadig and the

Data caching is something that can ofter be gnored in tutorials about

client-side app developmnt, CacheProvder which allow you to cache data both in memory and using localStorage it it's available.

organize your interface into logical views,

backed by models,  each o whih can be updated independently  when the model changes, without having to redraw the page.

 

<pde;s defined using Backbone.Model contan the interacitve data and logc around the information being used in our application For the g  Photo  to reperent the data around the image entries.

Backbone.Collection allos you to define ordered sets of models which can bid change eventsto the notified wen models in a collection are nmodified

PhotoCollection  

IndexView,  SubalbumView   PhotoView 

posted @ 2012-11-14 19:16  顺武  阅读(544)  评论(0编辑  收藏  举报