View
19
Download
6
Embed Size (px)
DESCRIPTION
Citation preview
让开发也懂前端玉伯
Thursday, July 7, 2011
Who am I ?
• 淘宝花名:玉伯• Frank Wang / lifesinger
• 王保平 / 射雕
• http://lifesinger.wordpress.com/
Thursday, July 7, 2011
Topics
• 前端开发知识概要• Web 应用的基石:HTML
• 程序员的画笔:CSS
• 潜力无限的语言:JavaScript
• 浏览器与调试工具• 总结与展望
Thursday, July 7, 2011
前端开发知识概要
Thursday, July 7, 2011
http://www.flickr.com/photos/kejun/3114605967/Thursday, July 7, 2011
Thursday, July 7, 2011
Web 应用的基石:HTML
Thursday, July 7, 2011
Thursday, July 7, 2011
http://www.w3.org/People/Berners-Lee/Thursday, July 7, 2011
• 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
HTML是什么
• 超文本标记语言(HyperText Markup Language)
• 用“链接”将网页、设置整个网络串联起来
Thursday, July 7, 2011
Thursday, July 7, 2011
标记、元素和属性
Thursday, July 7, 2011
http://dancewithnet.com/2009/06/14/activating-browser-modes-with-doctype/
Thursday, July 7, 2011
常用元素• 结构元素: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
HTML的语义化
• 用合适的标记表示合适的内容• 如同作文,没有唯一的标准• 优美很难达到,但不可放弃努力
Thursday, July 7, 2011
• 该用 table 的时候大胆用
• 避免多 div 症和多 span 症
• 避免多 li 症
Thursday, July 7, 2011
Thursday, July 7, 2011
Thursday, July 7, 2011
Thursday, July 7, 2011
Thursday, July 7, 2011
Thursday, July 7, 2011
HTML5
Thursday, July 7, 2011
Thursday, July 7, 2011
http://www.w3.org/TR/html5/
<canvas>
<video>
<audio>
<datalist>
<figure>
<nav>
<ruby>
<progress>
<section>
<time>
...
Thursday, July 7, 2011
推荐资源
http://www.w3.org/TR/html5/
Thursday, July 7, 2011
程序员的画笔:CSS
Thursday, July 7, 2011
• 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
什么是CSS
• 层叠样式表(Cascading Style Sheet)
• 负责展现
• 是演员的化妆,是女人的头饰
Thursday, July 7, 2011
Thursday, July 7, 2011
CSS 基础• 选择器:样式作用给谁
• 属性:要修改什么样式
• 属性值:要修改成什么值
Thursday, July 7, 2011
选择器
http://www.w3.org/TR/css3-selectors/Thursday, July 7, 2011
属性
http://www.w3.org/wiki/CSS/PropertiesThursday, July 7, 2011
盒模型
Thursday, July 7, 2011
显示:display
• div、p 等是 block 元素
• span、a、img 等是 inline 元素
• display: block/inline/inline-block/none; 可以改变元素的展现形式
Thursday, July 7, 2011
Thursday, July 7, 2011
http://www.quirksmode.org/css/display.htmlThursday, July 7, 2011
浮动:float
• 指定元素浮动方式
• 是页面布局的重要方式
Thursday, July 7, 2011
Thursday, July 7, 2011
定位:position
• position: relative/absolute/static/fixed
• 用来定位元素
Thursday, July 7, 2011
Thursday, July 7, 2011
Thursday, July 7, 2011
Cascading
• 不同的样式表会按照优先级层叠应用在页面元素上
• 不同的样式规则会按照权重层叠应用在页面元素上
Thursday, July 7, 2011
权重和优先级
http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html
Thursday, July 7, 2011
CSS 禅意花园
http://csszengarden.com/Thursday, July 7, 2011
CSS 的兼容性
http://www.quirksmode.org/css/contents.html
Thursday, July 7, 2011
CSS 的兼容性
http://www.gtalbot.org/BrowserBugsSection/Thursday, July 7, 2011
CSS 3
http://media.24ways.org/2009/15/space.html
Thursday, July 7, 2011
推荐资源
Thursday, July 7, 2011
潜力无限的语言:JavaScript
Thursday, July 7, 2011
• 1995 年,JavaScript 诞生
• 1996 年,ECMAScript 诞生
• 1999 年,ECMAScript 3
• 2009 年,ECMAScript 5
• ECMAScript Harmony 正在讨论中
Thursday, July 7, 2011
开发人员都懂 JavaScript
Thursday, July 7, 2011
但 Java 和 JavaScript 的关系,就和雷锋和雷峰塔一样。
Thursday, July 7, 2011
与其说我爱 JavaScript,不如说我恨它。它是 C 语言和 Self 语言一夜情的产物。十八世纪英国文学家约翰逊博士说得好:“它的优秀之处并非原创,它的原创之处并不优秀。”
-- Brendan Eich
http://www.ruanyifeng.com/blog/2011/06/birth_of_javascript.html
Thursday, July 7, 2011
JavaScript
JavaC
Scheme
Self
Thursday, July 7, 2011
Thursday, July 7, 2011
Thursday, July 7, 2011
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
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
Thursday, July 7, 2011
DOM
• 文档对象模型(Document Object Model)
• DOM 是脚本与页面交互的桥梁
• DOM 往往是 JavaScript 操作的性能瓶颈
Thursday, July 7, 2011
DOM Scripting: Web Design with JavaScript and the Document Object Model
Thursday, July 7, 2011
推荐资源
http://es5.github.com/
http://lifesinger.wordpress.com/2011/02/27/references-for-javascript-study/Thursday, July 7, 2011
JavaScript 类库的世界
Thursday, July 7, 2011
Thursday, July 7, 2011
Thursday, July 7, 2011
大教堂式 vs. 集市风格
Thursday, July 7, 2011
http://www.google.com/trends?q=yui%2Cjquery%2Cmootools%2Cdojo%2Csencha%2Cdojo
Thursday, July 7, 2011
http://www.google.com/trends?q=backbone%2Czepto%2Clabjs%2Cunderscore%2Cmustache%2Cmodernize&ctab=0&geo=all&date=all&sort=0
Thursday, July 7, 2011
我们需要什么?
Thursday, July 7, 2011
基础功能:DOM、Event、Ajax...
通用工具:Validator、Storage、Template...
常用组件:Calendar、Tabs、Dialog...
应用框架:MVC、Unit Testing、Module Loader...
Thursday, July 7, 2011
Thursday, July 7, 2011
Thursday, July 7, 2011
http://addyosmani.com/resources/toolschart/chart.pdf
Thursday, July 7, 2011
KISSY 历程
Thursday, July 7, 2011
2008
Thursday, July 7, 2011
2009
Thursday, July 7, 2011
2008 - 2009• yahoo-dom-event.js 很好用
• 其他组件特别是 UI 组件,体积太大,交互不太符合国情,由此诞生了 TBra
• 2009 年始,开始有了 suggest, kissy editor 等复杂组件
• 线上以 web pages 为主,比较简单
• KISSY 开始基础性工作
• 内部系统有用 ExtJS
Thursday, July 7, 2011
2010
Thursday, July 7, 2011
2010• Yahoo 开始主推 YUI3
• YUI3 不够成熟,组件更加庞大;内部系统试用时,出现性能问题;再 IE6-7 下有性能隐患
• jQuery 发展迅猛,但因为历史原因,很难入驻淘宝
• KISSY 逐步完善,开始有了 Switchable、Calendar、DataLazyload、AJBridge 等组件
• 线上开始出现 webww 等 web apps
• 内部系统一直抱怨前端组件不够用
Thursday, July 7, 2011
KISSY
• 起初是个编辑器 KISSY Editor
• 核心部分,是 YUI2 与 jQuery 多夜情的产物
• 组件,是源自淘宝业务的需求• KISSY 如今是一整套解决方案
Thursday, July 7, 2011
KISSY 遇到的问题
core 的进化与维护
组件开发成本高
头疼的文档 新人培训
Thursday, July 7, 2011
我们究竟需要什么?
Thursday, July 7, 2011
解决业务问题技能成长
做酷且有趣的应用
自由的时间
领略业界前沿
Thursday, July 7, 2011
解决业务问题
Thursday, July 7, 2011
...我以前就一直说:我们离最先进的技术的差距只有半年。我们并不差多少,在一个问题上努力耕耘半年,我们就会变成顶尖的好手。但是,接下来我们仍然会白费、湮没,以至于消失得无影无踪。而现在的kissy,也面临这样的一个问题。
-- 周爱民
Thursday, July 7, 2011
...我的观点中,必须说明两点,工程师,从职业素养上来说,我们的价值就是“把一件事做得更好、更专业、更完美,优秀,及至无可挑剔”。这本身就是对我们而言最有意义的事情。如果没有这种心态,那根本就谈不上专业、职业,以及职业修养。
-- 周爱民
Thursday, July 7, 2011
世界上有很多聪明人,很多事情已经做得非常棒。有太多更需要投入的地方,的确不应该在别人已经做得很好的地方浪费时间了。
-- 大教堂与集市
Thursday, July 7, 2011
类库的第三种风格
Thursday, July 7, 2011
Thursday, July 7, 2011
Thursday, July 7, 2011
提供最基础的功能
规范最基本的约定
百花齐放 优胜劣汰
丛林法则
Thursday, July 7, 2011
商场风格
不是集市
不是大教堂有门槛
品质保障开放式竞争
Thursday, July 7, 2011
SeaJS 的理念
• 保持简单• 避免重复• 追求卓越
Thursday, July 7, 2011
路走对了,就不怕远
Thursday, July 7, 2011
浏览器与调试工具
Thursday, July 7, 2011
1991年,首个浏览器:WorldWideWeb
http://en.wikipedia.org/wiki/Web_browserThursday, July 7, 2011
1993年,Mosaic
http://en.wikipedia.org/wiki/Mosaic_(web_browser)Thursday, July 7, 2011
IE
Thursday, July 7, 2011
Firefox
Thursday, July 7, 2011
Chrome
Thursday, July 7, 2011
Safari
Thursday, July 7, 2011
Opera
Thursday, July 7, 2011
Thursday, July 7, 2011
WebKit Gecko
Trident
Presto
Thursday, July 7, 2011
How browsers work
http://taligarsiel.com/Projects/howbrowserswork1.htm
Thursday, July 7, 2011
开发和调试工具
Thursday, July 7, 2011
Thursday, July 7, 2011
WebKit Developer Tools
Thursday, July 7, 2011
Thursday, July 7, 2011
Thursday, July 7, 2011
总结
Thursday, July 7, 2011
• 读好书• 练习 1800 个小时
• 在实战中进阶
Thursday, July 7, 2011
展望
Thursday, July 7, 2011
1993
Thursday, July 7, 2011
2005
Thursday, July 7, 2011
2010
Thursday, July 7, 2011
2022 ?
Thursday, July 7, 2011
Q & A
• Twitter: @lifesinger
• 新浪微博:@玉伯也叫射雕
• 阿里旺旺:玉伯• 最喜欢的交流方式:[email protected]
Thursday, July 7, 2011
Thanks!
Thursday, July 7, 2011