2011淘宝首页开发实践

51
2011淘页开发实践 2011-01-14 拔赤 http://jayli.github.com

description

2011新年版淘宝首页开发实践总结

Transcript of 2011淘宝首页开发实践

Page 1: 2011淘宝首页开发实践

2011淘宝首页开发实践

2011-01-14

• 拔赤http://jayli.github.com

Page 2: 2011淘宝首页开发实践

拔赤 - 前端开发工程师2008.4 - 2009.9 Yahoo!

2009.9 - present Taobao

Page 3: 2011淘宝首页开发实践

http://www.taobao.com

Page 4: 2011淘宝首页开发实践

一、从单兵作战到团队开发

Page 5: 2011淘宝首页开发实践

约定“词汇表”

css/js命名规则源自词汇表

Page 6: 2011淘宝首页开发实践

各自独立的demo.html

统一的layout.html通过SSI调用各模块demo

Page 7: 2011淘宝首页开发实践

搭建本地a.tbcdn.cn环境,模拟cdn的combo

http://wiki.ued.taobao.net/doku.php?id=ued.bj:f2e:tbcdn

http://www.slideshare.net/lijing00333/yui-combo?from=ss_embed

Page 8: 2011淘宝首页开发实践

基于kissy 1.1.6

各自使用沙箱,避免全局变量冲突

Page 9: 2011淘宝首页开发实践

使用打包脚本 build.sh 统一发布js/css

Page 10: 2011淘宝首页开发实践

小结:

• 约定词汇表

• 基于 SSI 和 combo 的本地开发环境

• 打包脚本

目的:减少冲突

Page 12: 2011淘宝首页开发实践

二、摆脱栅格的束缚

Page 13: 2011淘宝首页开发实践

栅格

“万变”的layout布局?

Page 14: 2011淘宝首页开发实践

淘宝现有 950 栅格原型

Page 15: 2011淘宝首页开发实践

990 栅格

30(列宽) x 25(列) + 10(槽宽) x 24(槽数)

290

Page 16: 2011淘宝首页开发实践

300

1000px “栅格”?

C(列宽) x n(列) + 10(槽宽) x (n-1)(槽数)n∈[15,40],C∈Z 无解

Page 17: 2011淘宝首页开发实践

设计和实现都不必拘泥于栅格系统

Page 18: 2011淘宝首页开发实践

典型的双飞翼布局,无确切语义的多余标签

Page 19: 2011淘宝首页开发实践

标识位置的“语义” => 描述内容的“语义”

绝对定位,简单高效

Page 21: 2011淘宝首页开发实践

三、从 HTML4 到 HTML5

Page 22: 2011淘宝首页开发实践

IE 9

Safari 4+

Opera 10+

Chrome 4+

Firefox 3.6+

Page 23: 2011淘宝首页开发实践

让ie6/7/8 支持 HTML5 标签

<html><head><style>figure { color:orange; }

</style><script>document.createElement("figure");</script></head><body><figure>

淘宝网!

</figure></body></html>

Page 24: 2011淘宝首页开发实践
Page 25: 2011淘宝首页开发实践

Let’s Do it!

Page 26: 2011淘宝首页开发实践

淘宝网 ie6/7/8 禁用脚本访问量占 0.1%+

如果ie6/7/8禁用脚本?

Page 27: 2011淘宝首页开发实践

<!--[if lte IE 8]> <noscript><style>.html5-wrappers {display:none !important;}</style><div class="ie-noscript-warning">

您的浏览器禁用了脚本,请<a href="">查看这里</a>来启用脚本!或者<a href="/?noscript=1">继续访问</a>.

</div></noscript> <![endif]-->

Page 28: 2011淘宝首页开发实践

如果禁用了 ie 脚本

Page 29: 2011淘宝首页开发实践

IE 禁用脚本访问/?noscript=1

Firefox 禁用脚本

Opera 禁用脚本

Page 30: 2011淘宝首页开发实践

• 跟随向导启用脚本

• 进入 html4 标签页面

IE 6/7/8 禁用脚本用户的选择

Page 31: 2011淘宝首页开发实践

根据可用性设计的思想,这个时候,你应该告诉用户,哪些事是不对的,以及怎样纠正,这种做法被称之为"防御性设计" (Defensive Design)。

—— Joel Spolsky

Page 33: 2011淘宝首页开发实践

四、fast by default

Page 34: 2011淘宝首页开发实践

我们过于依赖 Yslow 和 pageSpeed?

Page 35: 2011淘宝首页开发实践

却忽视了影响体验最重要的因素:时间!

Page 36: 2011淘宝首页开发实践

目标:将 first rendering(绿) 提前

Page 37: 2011淘宝首页开发实践

• 内容的延时加载

• Dom节点的延时渲染

• 函数的延时执行

• 将 sprites 载入提前

• 缓存、combo…

传统优化策略依然适用

Page 38: 2011淘宝首页开发实践

最易被忽视的真相:JavaScript 执行效率

• 首页去 Tbra

• 减少对DomReady的依赖

• 重构臃肿的逻辑

Page 39: 2011淘宝首页开发实践

2010c (旧)版首页 CPU 消耗

2011a (新)版首页 CPU 消耗

客户端 CPU 损耗对 FirstRendering 的影响

Page 40: 2011淘宝首页开发实践

0.5s 1.0s 1.5s 2.0s 3s

ebay

amazone

dangdang

buy360

taobao

E-Shopping 网站渲染速度

Page 42: 2011淘宝首页开发实践

五、其他细节

Page 43: 2011淘宝首页开发实践

必要的菜单延时

Page 44: 2011淘宝首页开发实践

/* except for ie 6/7/8 */.J_slide li {

-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;height:20px;

}

圆角的实现

Page 45: 2011淘宝首页开发实践

/* 圆角 for ie6,7,8 use vml */var css = document.createStyleSheet();css.addRule("v\\:roundrect", "behavior:

url(#default#VML);display:inline-block;");var rect = document.createElement('v:roundrect');setAttribute(rect, {

arcsize:"20px",stroked:false

});rect.css({

width:"20px",height:"20px", antialias:true});

IE 6/7/8使用js实现圆角

Page 46: 2011淘宝首页开发实践

首页开发文档

Page 47: 2011淘宝首页开发实践

Just for fun…

Page 49: 2011淘宝首页开发实践

鸣谢!

Page 50: 2011淘宝首页开发实践

昂首挺胸 迈进HTML5时代!