Introducing Amplify
Upcoming SlideShare
Loading in...5
×
 

Introducing Amplify

on

  • 3,697 views

 

Statistics

Views

Total Views
3,697
Views on SlideShare
3,697
Embed Views
0

Actions

Likes
3
Downloads
63
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Introducing Amplify Introducing Amplify Presentation Transcript

  • INTRODUCING AMPLIFY by Scott González
  • GOALS• Solve real problems based on existing projects• Easy to drop into existing projects
  • INITIAL FEATURES• Persistent client-side storage• Mocking ajax requests• Manipulating data from ajax requests
  • OPEN SOURCE• Dual licensed • MIT • GPLv2
  • STORE• Persistent client-side storage• Cross-browser • IE 5+, Firefox 2+, Safari 4+, Chrome, Opera 10.5+ • iPhone 2+, Android 2+• localStorage, sessionStorage, globalStorage, userData
  • STORE• Falls back to in-memory storage • Never worry about whether a persistent store exists• Support for time-based expiration of data• Extensible
  • STORE API• store a value • amplify.store( key, value )• get a value • amplify.store( key ) • amplify.store() // all values
  • STORE API• expiration • amplify.store( key, value, { expires: 1000 } )• specific store • amplify.store.sessionStorage( key, value ) • amplify.store.sessionStorage( key )
  • REQUEST• abstraction for requesting data• separates requesting data from: • retrieving data • parsing data • caching data
  • REQUEST API• define a request • amplify.request.define( resourceId, resourceType, settings )• make a request • amplify.request( resourceId, data, callback )
  • REQUEST APIamplify.request.define( “my-data”, “ajax”, { url: “/path/to/resource”, dataType: “json”});
  • REQUEST APIamplify.request( “my-data”, { foo: “bar”, baz: “qux” }, function( data ) { // do something awesome with data });
  • REQUEST APIamplify.request({ resourceId: “my-data”, data: { foo: “bar”, baz: “qux” }, success: function( data ) {}, error: function( data ) {},});
  • REQUEST TYPES• ajax• custom one-off requests• more to come• easy to define new request types
  • REQUEST APIamplify.request.define( “echo”, function( settings ) { settings.success( settings.data ); // success, error, data, resourceId});
  • MOCKING REQUESTS• real request • amplify.request.define( “my-data”, “ajax”, ... )• mock request • amplify.request.define( “my-data”, function( settings ) { ... } )
  • MANIPULATING DATA• change the data format from third party services• change the status (success/error) of a request • many services always respond with a 200 OK HTTP status
  • REQUEST DECODERS• allowyou to parse data before calling the success or error callback• change the data passed to the callback• change the status of the request
  • REQUEST DECODERSamplify.request.define( “my-data”, “ajax”, { url: “/path/to/resource”, dataType: “json”, decoder: function( data, status, xhr, success, error ) { if ( data.errCode ) { error({ code: data.errCode, msg: data.errMsg }); } else { success( data ); } });
  • REQUEST CACHING• boolean: in-memory• number: in-memory with expiration (in ms)• “persist”: delegate to amplify.store()• “sessionStorage”: delegate to amplify.store.sessionStorage()• easy to create new cache types
  • PUB/SUB• not on initial list of features • we usually use custom events in jQuery• needed a simple system to post messages for amplify.request
  • PUB/SUB API• subscribe to a message • amplify.subscribe( topic, callback ) • amplify.subscribe( topic, context, callback ) • amplify.subscribe( topic, callback, priority ) • amplify.subscribe( topic, context, callback, priority )
  • PUB/SUB API• publish a message • amplify.publish( topic ) • amplify.publish( topic, arg1, arg2 )• returns boolean indicating whether any subscription returned false
  • REQUEST MESSAGES• request.before, request.before.ajax • do something before a request • prevent a request• request.success, request.error, request.complete • do something after a request
  • AMPLIFY LINKS• http://github.com/appendto/amplify• http://amplifyjs.com• http://groups.google.com/group/amplifyjs• http://swarm.amplifyjs.com/user/amplify• irc://freenode/amplify.js