happy designer 20080329

69
SPA JavaScript::Writer pQuery

Upload: kang-min-liu

Post on 08-May-2015

2.868 views

Category:

Technology


0 download

DESCRIPTION

gugod's talk about SPA, JavaScript::Writer and pQuery. In HappyDesigner meetup 2008/03/29.

TRANSCRIPT

Page 1: Happy Designer 20080329

SPAJavaScript::Writer

pQuery

Page 2: Happy Designer 20080329

My Name IsGUGOD

Page 3: Happy Designer 20080329

My Name IsGUGOD

•Coffee-maniac•日本語を勉強•Hacker•JavaScript•Perl, Ruby

Page 4: Happy Designer 20080329

Emacs

Page 5: Happy Designer 20080329

SPA

Page 6: Happy Designer 20080329

Single Page Application

Page 11: Happy Designer 20080329

http://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/HTTP_persistent_connection.svg

web

+ajax

telnet

cometd

Page 12: Happy Designer 20080329

SPA EXAMPLE

Page 13: Happy Designer 20080329

gmailgoogle map

Page 14: Happy Designer 20080329

SPA : how

Page 15: Happy Designer 20080329

iframe

Page 16: Happy Designer 20080329

ajax

Page 17: Happy Designer 20080329

href=”/go/there”

<a

>

Page 18: Happy Designer 20080329

href=”/go/there”

<a

>

Page 19: Happy Designer 20080329

onclick=”#{ajax}”

<a

>

Page 20: Happy Designer 20080329

action=”/that/one”

<form

>

Page 21: Happy Designer 20080329

action=”/that/one”

<form

>

Page 22: Happy Designer 20080329

onsubmit=”#{ajax}”

<form

>

Page 23: Happy Designer 20080329

大きい相違Biggest difference

Page 24: Happy Designer 20080329

document.body 恆久遠

Page 25: Happy Designer 20080329

global variable永流傳

Page 26: Happy Designer 20080329

session storage(fake)

Page 27: Happy Designer 20080329

Performance

Page 28: Happy Designer 20080329

/page/simple

Page 29: Happy Designer 20080329

•HTML

/page/simple

Page 30: Happy Designer 20080329

•HTML•JavaScript

/page/simple

Page 31: Happy Designer 20080329

•HTML•JavaScript•Compile JavaScript

/page/simple

Page 32: Happy Designer 20080329

•HTML•JavaScript•Compile JavaScript•Run JavaScript

/page/simple

Page 33: Happy Designer 20080329

/page/simpleHTML: 1K

JavaScript: 1KCompile: 100ms

Run: 20ms

Page 34: Happy Designer 20080329

/page/simpleHTML: 1K

JavaScript: 1KCompile: 100ms

Run: 20ms

/page/complexHTML: 2K

JavaScript: 2KCompile: 200ms

Run: 80ms

Page 35: Happy Designer 20080329

/page/simpleHTML: 1K

JavaScript: 1KCompile: 100ms

Run: 20ms

/page/complexHTML: 2K

JavaScript: 2KCompile: 200ms

Run: 80ms

/page/simpleHTML: 1K

JavaScript: 1KCompile: 100ms

Run: 20ms

Page 36: Happy Designer 20080329

/page/simpleHTML: 1K

JavaScript: 1KCompile: 100ms

Run: 20ms

/page/complexHTML: 2K

JavaScript: 2KCompile: 200ms

Run: 80ms

/page/simpleHTML: 1K

JavaScript: 1KCompile: 100ms

Run: 20ms

Total:HTML: 4KJavaScript: 4KCompile: 400msRun: 120ms

Page 37: Happy Designer 20080329

/page/simpleHTML: 1K

JavaScript: 2KCompile: 200ms

Run: 20ms

Page 38: Happy Designer 20080329

/page/simpleHTML: 1K

JavaScript: 2KCompile: 200ms

Run: 20ms

/page/complexHTML: 2K

JavaScript: 0KCompile: 0ms

Run: 80ms

Page 39: Happy Designer 20080329

/page/simpleHTML: 1K

JavaScript: 2KCompile: 200ms

Run: 20ms

/page/complexHTML: 2K

JavaScript: 0KCompile: 0ms

Run: 80ms

/page/simpleHTML: 1K

JavaScript: 0KCompile: 0ms

Run: 20ms

Page 40: Happy Designer 20080329

/page/simpleHTML: 1K

JavaScript: 2KCompile: 200ms

Run: 20ms

/page/complexHTML: 2K

JavaScript: 0KCompile: 0ms

Run: 80ms

/page/simpleHTML: 1K

JavaScript: 0KCompile: 0ms

Run: 20ms

Total:HTML: 4KJavaScript: 4KCompile: 200msRun: 120ms

Page 41: Happy Designer 20080329

Total:HTML: 4KJavaScript: 4KCompile: 400msRun: 120ms

Total:HTML: 4KJavaScript: 4KCompile: 200msRun: 120ms

SPANormal

Page 42: Happy Designer 20080329

Total:HTML: 4KJavaScript: 4KCompile: 400msRun: 120ms

Total:HTML: 4KJavaScript: 4KCompile: 200msRun: 120ms

SPANormal

Page 43: Happy Designer 20080329

PreloadAll Code

Page 44: Happy Designer 20080329

慢一次配合 “never expire” 處方服用,效果尤佳

Page 46: Happy Designer 20080329

Jifty::Plugin::SinglePage

Page 47: Happy Designer 20080329

JavaScript::Writer

Page 48: Happy Designer 20080329

JavaScript code generation from Perl.

Page 49: Happy Designer 20080329

js->alert(42);

Page 50: Happy Designer 20080329

js("Widget.Lightbox") ->show("Nihao");

Page 51: Happy Designer 20080329

js("3s")->latter( sub { js->alert(42); });

Page 52: Happy Designer 20080329

Why ?

Page 53: Happy Designer 20080329

Perl

We

Page 54: Happy Designer 20080329

JavaScript is

HARD

Page 55: Happy Designer 20080329

sleep()

Page 56: Happy Designer 20080329

asynchronous execution context

Page 57: Happy Designer 20080329

function can returnbefore it finished

Page 58: Happy Designer 20080329

Browser Sucks

Page 59: Happy Designer 20080329

pQuery

Page 60: Happy Designer 20080329

jQuery ported to Perl

Page 61: Happy Designer 20080329

use pQuery;

pQuery("http://google.com/search?q=pquery") ->find("h2") ->each(sub { my $i = shift; print $i + 1, ") ", pQuery($_)->text, "\n"; });

Page 62: Happy Designer 20080329

PQUERY(map "http://search.cpan.org/~$_/", qw(ingy gugod miyagawa)) ->find("table")->eq(1)->find("tr") ->EACH(sub{ printf("%40s - %s Perl distributions\n", $_->url, $_->length - 1) });

Query Multiple DOM All At Once

http://search.cpan.org/~ingy/ - 88 Perl distributions http://search.cpan.org/~gugod/ - 87 Perl distributions http://search.cpan.org/~miyagawa/ - 138 Perl distributions

Page 63: Happy Designer 20080329

Why

Page 64: Happy Designer 20080329

Perl

We

Page 65: Happy Designer 20080329

jQuery

We

Page 66: Happy Designer 20080329

JavaScript VMsSucks

Page 67: Happy Designer 20080329

Cross-Site ScriptingFileDB

Page 68: Happy Designer 20080329

The power of jQueryshould be released

Page 69: Happy Designer 20080329

謝謝