Top Banner
Mashing up JavaScript Advanced techniques for modern web applications Bastian Hofmann / VZnet Netzwerke Ltd.
66

international PHP2011_Bastian Hofmann_Mashing up java script

Jan 15, 2015

Download

Technology

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: international PHP2011_Bastian Hofmann_Mashing up java script

Mashing up JavaScriptAdvanced techniques for modern web applications

Bastian Hofmann / VZnet Netzwerke Ltd.

Page 2: international PHP2011_Bastian Hofmann_Mashing up java script

Wtf?

Page 3: international PHP2011_Bastian Hofmann_Mashing up java script
Page 4: international PHP2011_Bastian Hofmann_Mashing up java script
Page 5: international PHP2011_Bastian Hofmann_Mashing up java script
Page 6: international PHP2011_Bastian Hofmann_Mashing up java script
Page 7: international PHP2011_Bastian Hofmann_Mashing up java script

• JavaScript Apps

• CORS and OAuth2

• Local Storage

• OEmbed and Caja

• WebSockets, ActivityStrea.ms and PubsubHubbub

• OpenSocial

Page 8: international PHP2011_Bastian Hofmann_Mashing up java script
Page 9: international PHP2011_Bastian Hofmann_Mashing up java script
Page 10: international PHP2011_Bastian Hofmann_Mashing up java script
Page 11: international PHP2011_Bastian Hofmann_Mashing up java script

You?

Page 12: international PHP2011_Bastian Hofmann_Mashing up java script

Questions? Ask!

Page 15: international PHP2011_Bastian Hofmann_Mashing up java script

Let‘s write a JS App

Page 16: international PHP2011_Bastian Hofmann_Mashing up java script

Don‘t reinvent the wheel!

Page 17: international PHP2011_Bastian Hofmann_Mashing up java script

Open Source

}

Page 18: international PHP2011_Bastian Hofmann_Mashing up java script

Open Standards

Page 19: international PHP2011_Bastian Hofmann_Mashing up java script
Page 20: international PHP2011_Bastian Hofmann_Mashing up java script

DEMO

Page 21: international PHP2011_Bastian Hofmann_Mashing up java script

History & Bookmarking

Page 22: international PHP2011_Bastian Hofmann_Mashing up java script

http://sammyjs.org/

Page 23: international PHP2011_Bastian Hofmann_Mashing up java script

DEMO

Page 24: international PHP2011_Bastian Hofmann_Mashing up java script

API Access

Page 25: international PHP2011_Bastian Hofmann_Mashing up java script

Same Origin Policy

Page 26: international PHP2011_Bastian Hofmann_Mashing up java script

Cross-Origin Resource Sharing

Backendapi.twitter.com

Client client.net

AJAX

Access-Control-Allow-Origin: *

http://www.w3.org/TR/cors/

Page 27: international PHP2011_Bastian Hofmann_Mashing up java script

DEMO

Page 28: international PHP2011_Bastian Hofmann_Mashing up java script

var html="<ul>";for (var i=0; i < viewers.length; i++) {   html += "<li>" + viewers[i].displayName + "</li>";}html += "<ul>";document.getElementById("#div").innerHTML = html;

Page 29: international PHP2011_Bastian Hofmann_Mashing up java script

Templates

Page 30: international PHP2011_Bastian Hofmann_Mashing up java script

Mustache.JS

https://github.com/janl/mustache.js

}

Page 31: international PHP2011_Bastian Hofmann_Mashing up java script

DEMO

Page 32: international PHP2011_Bastian Hofmann_Mashing up java script

Authorization

Page 33: international PHP2011_Bastian Hofmann_Mashing up java script
Page 34: international PHP2011_Bastian Hofmann_Mashing up java script

+----------+ Client Identifier +----------------+ | |>---(A)-- & Redirection URI --->| | | | | | End <--+ - - - +----(B)-- User authenticates -->| Authorization | User | | | Server | | |<---(C)--- Redirect URI -------<| | | Client | with Access Token | | | in | in Fragment +----------------+ | Browser | | | +----------------+ | |>---(D)--- Redirect URI ------->| | | | without Fragment | Web Server | | | | with Client | | (F) |<---(E)--- Web Page with ------<| Resource | | Access | Script | | | Token | +----------------+ +----------+

User-Agent Profile

Page 35: international PHP2011_Bastian Hofmann_Mashing up java script

DEMO

Page 36: international PHP2011_Bastian Hofmann_Mashing up java script

Storing the access token

Page 37: international PHP2011_Bastian Hofmann_Mashing up java script

Cookie

Page 38: international PHP2011_Bastian Hofmann_Mashing up java script

Problem: Cookie is also sent to the backend

Page 39: international PHP2011_Bastian Hofmann_Mashing up java script

Local Storage

http://www.w3.org/TR/webstorage/

Page 40: international PHP2011_Bastian Hofmann_Mashing up java script

DEMO

Page 41: international PHP2011_Bastian Hofmann_Mashing up java script

Mash it up!

Page 43: international PHP2011_Bastian Hofmann_Mashing up java script

OEmbed• Retrieves embeddable content for a given link

http://www.flickr.com/services/oembed/?url=http%3A//www.flickr.com/photos/bees/2341623661/

{        "version": "1.0",        "type": "photo",        "width": 240,        "height": 160,        "title": "ZB8T0193",        "url": "http://farm4.static.flickr.com/3123/2341623661_7c99f48bbf_m.jpg",        "author_name": "Bees",        "author_url": "http://www.flickr.com/photos/bees/",        "provider_name": "Flickr",        "provider_url": "http://www.flickr.com/"}

http://oembed.com/

Page 44: international PHP2011_Bastian Hofmann_Mashing up java script

The embedded result

cool video:

Page 45: international PHP2011_Bastian Hofmann_Mashing up java script

OEmbed Aggregation

•embed.ly

•supports 218 services over one endpoint

•several libraries

•easy implementation

http://embed.ly/

Page 46: international PHP2011_Bastian Hofmann_Mashing up java script

DEMO

Page 47: international PHP2011_Bastian Hofmann_Mashing up java script
Page 48: international PHP2011_Bastian Hofmann_Mashing up java script

Caja

http://code.google.com/p/google-caja/

Page 49: international PHP2011_Bastian Hofmann_Mashing up java script

DEMO

Page 50: international PHP2011_Bastian Hofmann_Mashing up java script

Instant updates without reloading

Page 52: international PHP2011_Bastian Hofmann_Mashing up java script

<entry> <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type> <id>http://status.net.xyz:8061/index.php/notice/20</id> <title>hello from client</title> <content type="html">hello from client</content> <link rel="alternate" type="text/html" href="http://status.net.xyz:8061/index.php/notice/20"/> <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb> <published>2011-05-23T21:07:33+00:00</published> <updated>2011-05-23T21:07:33+00:00</updated> <link rel="ostatus:conversation" href="http://status.net.xyz:8061/index.php/conversation/20"/> <georss:point>52.52437 13.41053</georss:point> <link rel="self" type="application/atom+xml"href="http://status.net.xyz:8061/index.php/api/statuses/show/20.atom"/> <link rel="edit" type="application/atom+xml"href="http://status.net.xyz:8061/index.php/api/statuses/show/20.atom"/> <statusnet:notice_info local_id="20" source="api" favorite="false"repeated="false"></statusnet:notice_info></entry>

Page 53: international PHP2011_Bastian Hofmann_Mashing up java script

http://activitystrea.ms/

Page 55: international PHP2011_Bastian Hofmann_Mashing up java script

PubSubHubbubretrieves Atom feed with Hub URL

Hub

posts sthpings everysubscriber

subscribes for feed

ackssubscription

http://code.google.com/p/pubsubhubbub/

Page 56: international PHP2011_Bastian Hofmann_Mashing up java script

http://nodejs.org/

Page 57: international PHP2011_Bastian Hofmann_Mashing up java script

WebSockets

http://dev.w3.org/html5/websockets/

Page 58: international PHP2011_Bastian Hofmann_Mashing up java script

Browser Notifications

Page 59: international PHP2011_Bastian Hofmann_Mashing up java script

Tying it together

retrieve Stream with Hub

Ajax: request Subscription

WebSockets:new Post

subscribe at hubchallenge

acknew post

Notification

new post

Page 60: international PHP2011_Bastian Hofmann_Mashing up java script

DEMO

Page 61: international PHP2011_Bastian Hofmann_Mashing up java script

Including widgets

Page 62: international PHP2011_Bastian Hofmann_Mashing up java script
Page 63: international PHP2011_Bastian Hofmann_Mashing up java script

GADGETapivz.net

CONTAINERmeinvz.net

Page 64: international PHP2011_Bastian Hofmann_Mashing up java script
Page 65: international PHP2011_Bastian Hofmann_Mashing up java script

DEMO