121
让开发也懂前端 玉伯 Thursday, July 7, 2011

让开发也懂前端

  • View
    19

  • Download
    6

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 让开发也懂前端

让开发也懂前端玉伯

Thursday, July 7, 2011

Page 2: 让开发也懂前端

Who am I ?

• 淘宝花名:玉伯• Frank Wang / lifesinger

• 王保平 / 射雕

• http://lifesinger.wordpress.com/

Thursday, July 7, 2011

Page 3: 让开发也懂前端

Topics

• 前端开发知识概要• Web 应用的基石:HTML

• 程序员的画笔:CSS

• 潜力无限的语言:JavaScript

• 浏览器与调试工具• 总结与展望

Thursday, July 7, 2011

Page 4: 让开发也懂前端

前端开发知识概要

Thursday, July 7, 2011

Page 5: 让开发也懂前端

http://www.flickr.com/photos/kejun/3114605967/Thursday, July 7, 2011

Page 6: 让开发也懂前端

Thursday, July 7, 2011

Page 7: 让开发也懂前端

Web 应用的基石:HTML

Thursday, July 7, 2011

Page 8: 让开发也懂前端

Thursday, July 7, 2011

Page 9: 让开发也懂前端

http://www.w3.org/People/Berners-Lee/Thursday, July 7, 2011

Page 10: 让开发也懂前端

• 1989 年,Tim Berners-Lee 发明 HTML

• 1993 年,Mosaic 浏览器发布

• 1994 年,W3C 成立

• 1997 年,HTML 3.2

• 1999 年,HTML 4.01

• 2000 年,XHTML 1.0

• 2008 年,HTML 5

http://www.w3.org/People/Raggett/book4/ch02.htmlThursday, July 7, 2011

Page 11: 让开发也懂前端

HTML是什么

• 超文本标记语言(HyperText Markup Language)

• 用“链接”将网页、设置整个网络串联起来

Thursday, July 7, 2011

Page 12: 让开发也懂前端

Thursday, July 7, 2011

Page 13: 让开发也懂前端

标记、元素和属性

Thursday, July 7, 2011

Page 15: 让开发也懂前端

常用元素• 结构元素:p, div, span, h1-h6, body...

• 列表元素:ul, ol, dl, li, dd, dt

• 文本格式化元素:a, em, strong, pre...

• 表单元素:form, input, button, label...

• 媒体元素:img, object...

• 表格元素:table, tr, td, caption, tbody...

• ...

http://reference.sitepoint.com/html/elementsThursday, July 7, 2011

Page 16: 让开发也懂前端

HTML的语义化

• 用合适的标记表示合适的内容• 如同作文,没有唯一的标准• 优美很难达到,但不可放弃努力

Thursday, July 7, 2011

Page 17: 让开发也懂前端

• 该用 table 的时候大胆用

• 避免多 div 症和多 span 症

• 避免多 li 症

Thursday, July 7, 2011

Page 18: 让开发也懂前端

Thursday, July 7, 2011

Page 19: 让开发也懂前端

Thursday, July 7, 2011

Page 20: 让开发也懂前端

Thursday, July 7, 2011

Page 21: 让开发也懂前端

Thursday, July 7, 2011

Page 22: 让开发也懂前端

Thursday, July 7, 2011

Page 23: 让开发也懂前端

HTML5

Thursday, July 7, 2011

Page 24: 让开发也懂前端

Thursday, July 7, 2011

Page 25: 让开发也懂前端

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

<canvas>

<video>

<audio>

<datalist>

<figure>

<nav>

<ruby>

<progress>

<section>

<time>

...

Thursday, July 7, 2011

Page 26: 让开发也懂前端

推荐资源

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

Thursday, July 7, 2011

Page 27: 让开发也懂前端

程序员的画笔:CSS

Thursday, July 7, 2011

Page 28: 让开发也懂前端

• 1994 年,Håkon Wium Lie 提出 CSS 概念

• 1996 年,CSS Level 1

• 1997 年,CSS Working Group 创建

• 1998 年,CSS Level 2

• CSS Level 3 一直在开发中

Thursday, July 7, 2011

Page 29: 让开发也懂前端

什么是CSS

• 层叠样式表(Cascading Style Sheet)

• 负责展现

• 是演员的化妆,是女人的头饰

Thursday, July 7, 2011

Page 30: 让开发也懂前端

Thursday, July 7, 2011

Page 31: 让开发也懂前端

CSS 基础• 选择器:样式作用给谁

• 属性:要修改什么样式

• 属性值:要修改成什么值

Thursday, July 7, 2011

Page 32: 让开发也懂前端

选择器

http://www.w3.org/TR/css3-selectors/Thursday, July 7, 2011

Page 33: 让开发也懂前端

属性

http://www.w3.org/wiki/CSS/PropertiesThursday, July 7, 2011

Page 34: 让开发也懂前端

盒模型

Thursday, July 7, 2011

Page 35: 让开发也懂前端

显示:display

• div、p 等是 block 元素

• span、a、img 等是 inline 元素

• display: block/inline/inline-block/none; 可以改变元素的展现形式

Thursday, July 7, 2011

Page 36: 让开发也懂前端

Thursday, July 7, 2011

Page 37: 让开发也懂前端

http://www.quirksmode.org/css/display.htmlThursday, July 7, 2011

Page 38: 让开发也懂前端

浮动:float

• 指定元素浮动方式

• 是页面布局的重要方式

Thursday, July 7, 2011

Page 39: 让开发也懂前端

Thursday, July 7, 2011

Page 40: 让开发也懂前端

定位:position

• position: relative/absolute/static/fixed

• 用来定位元素

Thursday, July 7, 2011

Page 41: 让开发也懂前端

Thursday, July 7, 2011

Page 42: 让开发也懂前端

Thursday, July 7, 2011

Page 43: 让开发也懂前端

Cascading

• 不同的样式表会按照优先级层叠应用在页面元素上

• 不同的样式规则会按照权重层叠应用在页面元素上

Thursday, July 7, 2011

Page 45: 让开发也懂前端

CSS 禅意花园

http://csszengarden.com/Thursday, July 7, 2011

Page 46: 让开发也懂前端

CSS 的兼容性

http://www.quirksmode.org/css/contents.html

Thursday, July 7, 2011

Page 47: 让开发也懂前端

CSS 的兼容性

http://www.gtalbot.org/BrowserBugsSection/Thursday, July 7, 2011

Page 48: 让开发也懂前端

CSS 3

http://media.24ways.org/2009/15/space.html

Thursday, July 7, 2011

Page 49: 让开发也懂前端

推荐资源

Thursday, July 7, 2011

Page 50: 让开发也懂前端

潜力无限的语言:JavaScript

Thursday, July 7, 2011

Page 51: 让开发也懂前端

• 1995 年,JavaScript 诞生

• 1996 年,ECMAScript 诞生

• 1999 年,ECMAScript 3

• 2009 年,ECMAScript 5

• ECMAScript Harmony 正在讨论中

Thursday, July 7, 2011

Page 52: 让开发也懂前端

开发人员都懂 JavaScript

Thursday, July 7, 2011

Page 53: 让开发也懂前端

但 Java 和 JavaScript 的关系,就和雷锋和雷峰塔一样。

Thursday, July 7, 2011

Page 54: 让开发也懂前端

与其说我爱 JavaScript,不如说我恨它。它是 C 语言和 Self 语言一夜情的产物。十八世纪英国文学家约翰逊博士说得好:“它的优秀之处并非原创,它的原创之处并不优秀。”

-- Brendan Eich

http://www.ruanyifeng.com/blog/2011/06/birth_of_javascript.html

Thursday, July 7, 2011

Page 55: 让开发也懂前端

JavaScript

JavaC

Scheme

Self

Thursday, July 7, 2011

Page 56: 让开发也懂前端

Thursday, July 7, 2011

Page 57: 让开发也懂前端

Thursday, July 7, 2011

Page 58: 让开发也懂前端

Closure

for(var i = 0; i < elements.length; i++) { (function(n) { elements[n].addEventListener(‘click’, function() { alert(n); }); })(i);}

http://jibbering.com/faq/notes/closures/

Thursday, July 7, 2011

Page 59: 让开发也懂前端

Prototypefunction Animal(name) { this.name = name;}function Dog(name) { Animal.call(this, name);}

Dog.prototype = Object.create(Animal.prototype);Dog.prototype.constructor = Dog;

var dog = new Dog(‘汪汪’);

http://javascript.crockford.com/inheritance.htmlThursday, July 7, 2011

Page 60: 让开发也懂前端

Thursday, July 7, 2011

Page 61: 让开发也懂前端

DOM

• 文档对象模型(Document Object Model)

• DOM 是脚本与页面交互的桥梁

• DOM 往往是 JavaScript 操作的性能瓶颈

Thursday, July 7, 2011

Page 62: 让开发也懂前端

DOM Scripting: Web Design with JavaScript and the Document Object Model

Thursday, July 7, 2011

Page 63: 让开发也懂前端

推荐资源

http://es5.github.com/

http://lifesinger.wordpress.com/2011/02/27/references-for-javascript-study/Thursday, July 7, 2011

Page 64: 让开发也懂前端

JavaScript 类库的世界

Thursday, July 7, 2011

Page 65: 让开发也懂前端

Thursday, July 7, 2011

Page 66: 让开发也懂前端

Thursday, July 7, 2011

Page 67: 让开发也懂前端

大教堂式 vs. 集市风格

Thursday, July 7, 2011

Page 68: 让开发也懂前端

http://www.google.com/trends?q=yui%2Cjquery%2Cmootools%2Cdojo%2Csencha%2Cdojo

Thursday, July 7, 2011

Page 70: 让开发也懂前端

我们需要什么?

Thursday, July 7, 2011

Page 71: 让开发也懂前端

基础功能:DOM、Event、Ajax...

通用工具:Validator、Storage、Template...

常用组件:Calendar、Tabs、Dialog...

应用框架:MVC、Unit Testing、Module Loader...

Thursday, July 7, 2011

Page 72: 让开发也懂前端

Thursday, July 7, 2011

Page 73: 让开发也懂前端

Thursday, July 7, 2011

Page 74: 让开发也懂前端

http://addyosmani.com/resources/toolschart/chart.pdf

Thursday, July 7, 2011

Page 75: 让开发也懂前端

KISSY 历程

Thursday, July 7, 2011

Page 76: 让开发也懂前端

2008

Thursday, July 7, 2011

Page 77: 让开发也懂前端

2009

Thursday, July 7, 2011

Page 78: 让开发也懂前端

2008 - 2009• yahoo-dom-event.js 很好用

• 其他组件特别是 UI 组件,体积太大,交互不太符合国情,由此诞生了 TBra

• 2009 年始,开始有了 suggest, kissy editor 等复杂组件

• 线上以 web pages 为主,比较简单

• KISSY 开始基础性工作

• 内部系统有用 ExtJS

Thursday, July 7, 2011

Page 79: 让开发也懂前端

2010

Thursday, July 7, 2011

Page 80: 让开发也懂前端

2010• Yahoo 开始主推 YUI3

• YUI3 不够成熟,组件更加庞大;内部系统试用时,出现性能问题;再 IE6-7 下有性能隐患

• jQuery 发展迅猛,但因为历史原因,很难入驻淘宝

• KISSY 逐步完善,开始有了 Switchable、Calendar、DataLazyload、AJBridge 等组件

• 线上开始出现 webww 等 web apps

• 内部系统一直抱怨前端组件不够用

Thursday, July 7, 2011

Page 81: 让开发也懂前端

KISSY

• 起初是个编辑器 KISSY Editor

• 核心部分,是 YUI2 与 jQuery 多夜情的产物

• 组件,是源自淘宝业务的需求• KISSY 如今是一整套解决方案

Thursday, July 7, 2011

Page 82: 让开发也懂前端

KISSY 遇到的问题

core 的进化与维护

组件开发成本高

头疼的文档 新人培训

Thursday, July 7, 2011

Page 83: 让开发也懂前端

我们究竟需要什么?

Thursday, July 7, 2011

Page 84: 让开发也懂前端

解决业务问题技能成长

做酷且有趣的应用

自由的时间

领略业界前沿

Thursday, July 7, 2011

Page 85: 让开发也懂前端

解决业务问题

Thursday, July 7, 2011

Page 86: 让开发也懂前端

...我以前就一直说:我们离最先进的技术的差距只有半年。我们并不差多少,在一个问题上努力耕耘半年,我们就会变成顶尖的好手。但是,接下来我们仍然会白费、湮没,以至于消失得无影无踪。而现在的kissy,也面临这样的一个问题。

-- 周爱民

Thursday, July 7, 2011

Page 87: 让开发也懂前端

...我的观点中,必须说明两点,工程师,从职业素养上来说,我们的价值就是“把一件事做得更好、更专业、更完美,优秀,及至无可挑剔”。这本身就是对我们而言最有意义的事情。如果没有这种心态,那根本就谈不上专业、职业,以及职业修养。

-- 周爱民

Thursday, July 7, 2011

Page 88: 让开发也懂前端

世界上有很多聪明人,很多事情已经做得非常棒。有太多更需要投入的地方,的确不应该在别人已经做得很好的地方浪费时间了。

-- 大教堂与集市

Thursday, July 7, 2011

Page 89: 让开发也懂前端

类库的第三种风格

Thursday, July 7, 2011

Page 90: 让开发也懂前端

Thursday, July 7, 2011

Page 91: 让开发也懂前端

Thursday, July 7, 2011

Page 92: 让开发也懂前端

提供最基础的功能

规范最基本的约定

百花齐放 优胜劣汰

丛林法则

Thursday, July 7, 2011

Page 93: 让开发也懂前端

商场风格

不是集市

不是大教堂有门槛

品质保障开放式竞争

Thursday, July 7, 2011

Page 94: 让开发也懂前端

SeaJS 之路

http://seajs.com/

Thursday, July 7, 2011

Page 95: 让开发也懂前端

SeaJS 的理念

• 保持简单• 避免重复• 追求卓越

Thursday, July 7, 2011

Page 96: 让开发也懂前端

路走对了,就不怕远

Thursday, July 7, 2011

Page 97: 让开发也懂前端

浏览器与调试工具

Thursday, July 7, 2011

Page 98: 让开发也懂前端

1991年,首个浏览器:WorldWideWeb

http://en.wikipedia.org/wiki/Web_browserThursday, July 7, 2011

Page 99: 让开发也懂前端

1993年,Mosaic

http://en.wikipedia.org/wiki/Mosaic_(web_browser)Thursday, July 7, 2011

Page 100: 让开发也懂前端

IE

Thursday, July 7, 2011

Page 101: 让开发也懂前端

Firefox

Thursday, July 7, 2011

Page 102: 让开发也懂前端

Chrome

Thursday, July 7, 2011

Page 103: 让开发也懂前端

Safari

Thursday, July 7, 2011

Page 104: 让开发也懂前端

Opera

Thursday, July 7, 2011

Page 105: 让开发也懂前端

Thursday, July 7, 2011

Page 106: 让开发也懂前端

WebKit Gecko

Trident

Presto

Thursday, July 7, 2011

Page 107: 让开发也懂前端

How browsers work

http://taligarsiel.com/Projects/howbrowserswork1.htm

Thursday, July 7, 2011

Page 108: 让开发也懂前端

开发和调试工具

Thursday, July 7, 2011

Page 109: 让开发也懂前端

Thursday, July 7, 2011

Page 110: 让开发也懂前端

WebKit Developer Tools

Thursday, July 7, 2011

Page 111: 让开发也懂前端

Thursday, July 7, 2011

Page 112: 让开发也懂前端

Thursday, July 7, 2011

Page 113: 让开发也懂前端

总结

Thursday, July 7, 2011

Page 114: 让开发也懂前端

• 读好书• 练习 1800 个小时

• 在实战中进阶

Thursday, July 7, 2011

Page 115: 让开发也懂前端

展望

Thursday, July 7, 2011

Page 116: 让开发也懂前端

1993

Thursday, July 7, 2011

Page 117: 让开发也懂前端

2005

Thursday, July 7, 2011

Page 118: 让开发也懂前端

2010

Thursday, July 7, 2011

Page 119: 让开发也懂前端

2022 ?

Thursday, July 7, 2011

Page 120: 让开发也懂前端

Q & A

• Twitter: @lifesinger

• 新浪微博:@玉伯也叫射雕

• 阿里旺旺:玉伯• 最喜欢的交流方式:[email protected]

Thursday, July 7, 2011

Page 121: 让开发也懂前端

Thanks!

Thursday, July 7, 2011