網頁程式還可以怎麼設計

157
網頁程式 還可以怎麼設計 gugod http://gugod.org /

Upload: kang-min-liu

Post on 15-Dec-2014

3.311 views

Category:

Business


3 download

DESCRIPTION

分享一些我的實務經驗與概念。

TRANSCRIPT

Page 1: 網頁程式還可以怎麼設計

網頁程式還可以怎麼設計

gugodhttp://gugod.org/

Page 2: 網頁程式還可以怎麼設計

But First...

Page 3: 網頁程式還可以怎麼設計

Congratulations, John Lennon !

Page 4: 網頁程式還可以怎麼設計

溫故知新

Page 5: 網頁程式還可以怎麼設計

History

Page 6: 網頁程式還可以怎麼設計

In the beginning...

Page 7: 網頁程式還可以怎麼設計

<html><body><h1>Hello, World</h1></body></html>

HTML

Page 9: 網頁程式還可以怎麼設計

CGI

Page 10: 網頁程式還可以怎麼設計

use CGI qw/:standard/;print header, start_html('A Simple Example'), h1('A Simple Example'), start_form, "What's your name? ",textfield('name'),p, "What's the combination?", p, checkbox_group(-name=>'words', -values=>['eenie','meenie','minie','moe'], -defaults=>['eenie','minie']), p, "What's your favorite color? ", popup_menu(-name=>'color', -values=>['red','green','blue','chartreuse']),p, submit, end_form, hr;

Perl CGI.pm example

Page 11: 網頁程式還可以怎麼設計
Page 12: 網頁程式還可以怎麼設計

In the middle...

Page 13: 網頁程式還可以怎麼設計

Dark Ages

Page 14: 網頁程式還可以怎麼設計

Features:

Page 15: 網頁程式還可以怎麼設計

<font size=64>

OH</font>

Page 16: 網頁程式還可以怎麼設計

<ta bl e>

Page 17: 網頁程式還可以怎麼設計

<marquee>

Page 18: 網頁程式還可以怎麼設計

<marquee>

Page 19: 網頁程式還可以怎麼設計

java applettried hard to survive

Page 20: 網頁程式還可以怎麼設計

java applettried hard to survive

Page 21: 網頁程式還可以怎麼設計

flashreinvent everything

Page 22: 網頁程式還可以怎麼設計

JavaScriptborn to be mis-understood

Page 23: 網頁程式還可以怎麼設計

Builders / Tools

Page 24: 網頁程式還可以怎麼設計

FrontPageDreamWeaver

Word (!)

Page 25: 網頁程式還可以怎麼設計

PHP,Template::Toolkit,Mason, Embperl,

JSP

Page 26: 網頁程式還可以怎麼設計

... and nowadays

Page 27: 網頁程式還可以怎麼設計

Standard Compliant

Page 28: 網頁程式還可以怎麼設計

JHCjavascript, html, css

still rocks

(Jesus H. Christ !)

Page 29: 網頁程式還可以怎麼設計

jhc builderiWeb, rapidweaver, dreamweaver...

Page 30: 網頁程式還可以怎麼設計
Page 31: 網頁程式還可以怎麼設計

java applet

Page 32: 網頁程式還可以怎麼設計

java applet

Page 33: 網頁程式還可以怎麼設計

Buzz Words

Page 35: 網頁程式還可以怎麼設計

SPA

Page 36: 網頁程式還可以怎麼設計

Single Page Application

Page 41: 網頁程式還可以怎麼設計

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

web

+ajax

telnet

cometd

Page 42: 網頁程式還可以怎麼設計

SPA EXAMPLE

Page 43: 網頁程式還可以怎麼設計

gmailgoogle map

Page 44: 網頁程式還可以怎麼設計

SPA : how

Page 45: 網頁程式還可以怎麼設計

iframe

Page 46: 網頁程式還可以怎麼設計

ajax

Page 47: 網頁程式還可以怎麼設計

href=”/go/there”

<a

>

Page 48: 網頁程式還可以怎麼設計

href=”/go/there”

<a

>

Page 49: 網頁程式還可以怎麼設計

onclick=”#{ajax}”

<a

>

Page 50: 網頁程式還可以怎麼設計

action=”/that/one”

<form

>

Page 51: 網頁程式還可以怎麼設計

action=”/that/one”

<form

>

Page 52: 網頁程式還可以怎麼設計

onsubmit=”#{ajax}”

<form

>

Page 53: 網頁程式還可以怎麼設計

大きい相違Biggest difference

Page 54: 網頁程式還可以怎麼設計

document.body 恆久遠

Page 55: 網頁程式還可以怎麼設計

global variable永流傳

Page 56: 網頁程式還可以怎麼設計

session storage(fake)

Page 57: 網頁程式還可以怎麼設計

Performance

Page 58: 網頁程式還可以怎麼設計

/page/simple

Page 59: 網頁程式還可以怎麼設計

•HTML

/page/simple

Page 60: 網頁程式還可以怎麼設計

•HTML•JavaScript

/page/simple

Page 61: 網頁程式還可以怎麼設計

•HTML•JavaScript•Run JavaScript Lib

/page/simple

Page 62: 網頁程式還可以怎麼設計

•HTML•JavaScript•Run JavaScript Lib•Run JavaScript Main

/page/simple

Page 63: 網頁程式還可以怎麼設計

/page/simpleHTML: 1K

JavaScript: 1KLib: 100msMain: 20ms

Page 64: 網頁程式還可以怎麼設計

/page/simpleHTML: 1K

JavaScript: 1KLib: 100msMain: 20ms

/page/complexHTML: 2K

JavaScript: 2KLib: 200msMain: 80ms

Page 65: 網頁程式還可以怎麼設計

/page/simpleHTML: 1K

JavaScript: 1KLib: 100msMain: 20ms

/page/complexHTML: 2K

JavaScript: 2KLib: 200msMain: 80ms

/page/simpleHTML: 1K

JavaScript: 1KLib: 100msMain: 20ms

Page 66: 網頁程式還可以怎麼設計

/page/simpleHTML: 1K

JavaScript: 1KLib: 100msMain: 20ms

/page/complexHTML: 2K

JavaScript: 2KLib: 200msMain: 80ms

/page/simpleHTML: 1K

JavaScript: 1KLib: 100msMain: 20ms

Total:HTML: 4KJavaScript: 4KLib: 400msMain: 120ms

Page 67: 網頁程式還可以怎麼設計

/page/simpleHTML: 1K

JavaScript: 2KCompile: 200ms

Run: 20ms

Page 68: 網頁程式還可以怎麼設計

/page/simpleHTML: 1K

JavaScript: 2KCompile: 200ms

Run: 20ms

/page/complexHTML: 2K

JavaScript: 0KCompile: 0ms

Run: 80ms

Page 69: 網頁程式還可以怎麼設計

/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 70: 網頁程式還可以怎麼設計

/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 71: 網頁程式還可以怎麼設計

Total:HTML: 4KJavaScript: 4KLib: 400msMain: 120ms

Total:HTML: 4KJavaScript: 4KLib: 200msMain: 120ms

SPANormal

Page 72: 網頁程式還可以怎麼設計

Total:HTML: 4KJavaScript: 4KLib: 400msMain: 120ms

Total:HTML: 4KJavaScript: 4KLib: 200msMain: 120ms

SPANormal

Page 73: 網頁程式還可以怎麼設計

PreloadAll Code

Page 74: 網頁程式還可以怎麼設計

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

Page 76: 網頁程式還可以怎麼設計

Jifty::Plugin::SinglePage

Page 77: 網頁程式還可以怎麼設計

Generator

Page 78: 網頁程式還可以怎麼設計

link_to( "Hello", onclick => ajax_replace("#area", "data/hello.html"));

Page 79: 網頁程式還可以怎麼設計

sub ajax_replace { my ( $target, $uri ) = @_; return sub { jQuery("#loading")->fadeIn( sub { jQuery("#area")->load($uri)->show( sub { jQuery("#loading")->fadeOut(); } ); } ); js->append("return false;"); };}

Page 80: 網頁程式還可以怎麼設計

JavaScript::Writer

Page 81: 網頁程式還可以怎麼設計

RJS

Page 82: 網頁程式還可以怎麼設計

New Tech

Page 83: 網頁程式還可以怎麼設計

User-centric

Page 84: 網頁程式還可以怎麼設計

Forum / Journal /Blog

Page 85: 網頁程式還可以怎麼設計

OpenIDdecentralized identity

Page 86: 網頁程式還可以怎麼設計

OAuth

A Bgrant

DATA

accessowner

Page 87: 網頁程式還可以怎麼設計

OpenSocial

Page 88: 網頁程式還可以怎麼設計
Page 89: 網頁程式還可以怎麼設計

Perfect

Page 90: 網頁程式還可以怎麼設計

Perfection is achieved, not when there is nothing left to add, but when there is nothing left to remove.

– Antoine de Saint-Exupery

Web App Design DOs and Don’ts.

Page 91: 網頁程式還可以怎麼設計

Mess

Page 92: 網頁程式還可以怎麼設計

Can Mess Be Measured ?

亂度如何度量

Page 93: 網頁程式還可以怎麼設計

Subjectively主觀地

Page 94: 網頁程式還可以怎麼設計

Model Diagram Show

Page 95: 網頁程式還可以怎麼設計
Page 96: 網頁程式還可以怎麼設計
Page 97: 網頁程式還可以怎麼設計
Page 98: 網頁程式還可以怎麼設計
Page 99: 網頁程式還可以怎麼設計
Page 100: 網頁程式還可以怎麼設計
Page 101: 網頁程式還可以怎麼設計
Page 102: 網頁程式還可以怎麼設計
Page 103: 網頁程式還可以怎麼設計
Page 104: 網頁程式還可以怎麼設計

Too many notes,my dear Mozart.Emperor Joseph II

Die Entführung aus dem Serail (後宮誘逃)

Page 105: 網頁程式還可以怎麼設計

Too many codes,my dear Hacker.

Gugod

Page 106: 網頁程式還可以怎麼設計
Page 107: 網頁程式還可以怎麼設計

Optimize

Page 108: 網頁程式還可以怎麼設計

1. 優化是一個過程

2. 優化是一個演繹的過程。而非改變本質。

Page 109: 網頁程式還可以怎麼設計

1. 優化是一個過程

A A2. 優化是一個演繹的過程。而非改變本質。

Page 110: 網頁程式還可以怎麼設計

PerformanceOptimization

Page 111: 網頁程式還可以怎麼設計

Joseph Smarr — High-performance JavaScript: Why Everything You've Been Taught Is Wrong

http://video.yahoo.com/watch/1041101

Page 112: 網頁程式還可以怎麼設計

Joseph Smarr — High-performance JavaScript: Why Everything You've Been Taught Is Wrong

http://video.yahoo.com/watch/1041101

Page 113: 網頁程式還可以怎麼設計

Performance@ 0day

Page 114: 網頁程式還可以怎麼設計

Slow

Pain

Forget

Died

Page 115: 網頁程式還可以怎麼設計

A 再怎麼優化還是 A

Page 116: 網頁程式還可以怎麼設計

A 再怎麼優化還是 A

A A

Page 117: 網頁程式還可以怎麼設計

除了優化之外,倒底需要的是什麼?

Page 118: 網頁程式還可以怎麼設計

Simplify簡化

Page 119: 網頁程式還可以怎麼設計

Remove

Page 120: 網頁程式還可以怎麼設計
Page 121: 網頁程式還可以怎麼設計

減法上等

Page 122: 網頁程式還可以怎麼設計

• Remove Models

• Remove Views

• Repeat... until there is nothing left to remove.

Page 123: 網頁程式還可以怎麼設計

• Model = Core

• ㊣ 簡化

Remove Models

Page 124: 網頁程式還可以怎麼設計

Remove Views

• View = UI

• UI 少 = 用起來單純

• 使其「用起來」很容易

Page 125: 網頁程式還可以怎麼設計

Shuffle 簡化 iPod UI

Page 126: 網頁程式還可以怎麼設計

Remove Controllers

Page 127: 網頁程式還可以怎麼設計

Remove Controllers

• Yeah.. what isn’t this in the list ?

Page 128: 網頁程式還可以怎麼設計

Remove Controllers

• Yeah.. what isn’t this in the list ?

• With too many controllers, you are already doomed.

Page 129: 網頁程式還可以怎麼設計

Less is Moresometimes

Page 130: 網頁程式還可以怎麼設計

jQuerySpiffy JavaScript

Page 131: 網頁程式還可以怎麼設計

jQuery(“<h1>Hello World</h1>”).appendTo(“#output”).show(“slow”, function() { jQuery(“#loading”).hide()});

Page 132: 網頁程式還可以怎麼設計

Ajaxbuzzer of the year

Page 133: 網頁程式還可以怎麼設計

Lazy loaded Content

Page 134: 網頁程式還可以怎麼設計

JSONLess markup, More data

Page 135: 網頁程式還可以怎麼設計

JSONRequestLess restrict, more mash-up

Page 136: 網頁程式還可以怎麼設計

Takahashi MethodLess text, more delivering

Page 137: 網頁程式還可以怎麼設計

(More Slides);-)

Page 138: 網頁程式還可以怎麼設計

Out-sourcingLess work, more productivity

Page 139: 網頁程式還可以怎麼設計
Page 140: 網頁程式還可以怎麼設計
Page 141: 網頁程式還可以怎麼設計

Recommendations

Page 142: 網頁程式還可以怎麼設計

DON’Ts不好吧

Page 143: 網頁程式還可以怎麼設計

Don’t Optimize Mess別優化亂象

Page 144: 網頁程式還可以怎麼設計

Reduced to Mess演繹亂象

Page 145: 網頁程式還可以怎麼設計

DOs這樣就對了

Page 146: 網頁程式還可以怎麼設計

Starts Simple始於純樸

Page 147: 網頁程式還可以怎麼設計

Ends Simple終於極簡

Page 148: 網頁程式還可以怎麼設計

我希望這真的是頂帽子,而不是像條吃了大象的蛇,這麼恐怖的東西

Page 149: 網頁程式還可以怎麼設計

Page 150: 網頁程式還可以怎麼設計

Conclusion...

Page 151: 網頁程式還可以怎麼設計

Dark Agesover yet ?

Page 152: 網頁程式還可以怎麼設計

Social NetworkMyth

Page 153: 網頁程式還可以怎麼設計

Still Growing

Page 154: 網頁程式還可以怎麼設計

Scalability

Page 155: 網頁程式還可以怎麼設計

Performance

Page 156: 網頁程式還可以怎麼設計

END

Page 157: 網頁程式還可以怎麼設計

EspressoORIGIN 1940s: from Italian (caffè) espresso,

literally ‘pressed out (coffee).’

http://en.wikipedia.org/wiki/Image:Linea_doubleespresso.jpg