基于yui combo的代码自动压缩及合并

27
基于YUI3和combo的代码压缩及合并 拔赤 [email protected] http://www.uedagazine.com 2010-05-29

Upload: jay-li

Post on 13-Jul-2015

5.893 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: 基于yui combo的代码自动压缩及合并

基于YUI3和combo的代码压缩及合并拔赤

[email protected]

http://www.uedagazine.com2010-05-29

Page 2: 基于yui combo的代码自动压缩及合并

关于我

李晶,花名拔赤–

淘宝前端工程师

Blog: http://www.uedmagazine.com–

Msn: [email protected]

Page 3: 基于yui combo的代码自动压缩及合并

可维护性和性能之间的平衡•

YUI combo

模块树•

开发环境中的combo+minify

实例

Page 4: 基于yui combo的代码自动压缩及合并

• 可维护性和性能之间的平衡•

YUI combo

模块树•

开发环境中的combo+minify

实例

Page 5: 基于yui combo的代码自动压缩及合并

可维护性,我们应当这样:

1,OO(代码易读)2,从应用抽象出组件(组件重用)3,功能的颗粒化(多人协作)4,图片的零存(更改简单)5,脚本无压缩(方便调试)

Page 6: 基于yui combo的代码自动压缩及合并

性能,我们应当这样:

1,面向DOM(保证DOM操作效率)2、3,更少的脚本文件(减少http请求数)4,图片合并(减少http请求数)5,压缩脚本(js、css瘦身)

Page 7: 基于yui combo的代码自动压缩及合并

我们的取舍?

可维护性 vs 性能

Page 8: 基于yui combo的代码自动压缩及合并

可维护性和性能之间的平衡

• YUI combo•

模块树

开发环境中的combo+minify•

实例

Page 9: 基于yui combo的代码自动压缩及合并

Why YUI & combo?

Why YUI–

延时加载脚本(更饱和的利用缓存)

模块化(更适于团队开发)

Why combo–

减少http请求数

Page 10: 基于yui combo的代码自动压缩及合并

combo handler

<script src="http://cn.yimg.com/i/yui/3.0.0/build/yui/yui‐min.js"></script><script src=http://cn.yimg.com/i/yui/3.0.0/build/oop/oop‐min.js></script><script src="http://cn.yimg.com/i/yui/3.0.0/build/dom/dom‐min.js"></script>

<script src="http://cn.yimg.com/combo?i/yui/3.0.0/build/yui/yui‐

min.js&i/yui/3.0.0/build/oop/oop‐min.js&i/yui/3.0.0/build/dom/dom‐

min.js"></script>

Page 11: 基于yui combo的代码自动压缩及合并

可维护性和性能之间的平衡•

YUI combo

• 模块树•

开发环境中的combo+minify

实例

Page 12: 基于yui combo的代码自动压缩及合并

YUI模块树

Y.addmojo({slide:{

path:'js/slide.js',requires:['tab','widget','plugin']

},tab:{

path:'js/tab.js',requires:['node']

},my_app:{

path:'my_app.js',requires:['slide']

}});

模块树示意

Page 13: 基于yui combo的代码自动压缩及合并

YUI模块树 续

脚本排序–

..,node,tab,widget,plugin,slide,my_app

脚本合并–

http://your_cdn/combo?node.js&tab.js&wi

dget.js&plugin.js&slide.js&my_app.js

Page 14: 基于yui combo的代码自动压缩及合并

YUI combo的缺憾

1,没有自动压缩,上线之前要手动压缩脚本2,自定义的modules不会被combo

Page 15: 基于yui combo的代码自动压缩及合并

对YUI3-loader的hack

让YUI可以combo所有的脚本–

loader.js

1930行

Page 16: 基于yui combo的代码自动压缩及合并

可维护性和性能之间的平衡•

YUI combo

模块树

• 开发环境中的combo+minify•

实例

Page 17: 基于yui combo的代码自动压缩及合并

开发环境中的combo

Combo的模拟

http://a.tbcdn.cn/combo.php?yui/3.0.0/build/oop/oop.js &tbra/2.1/header/header.js

oop.js

开发环境a.tbcdn.cn

oop.jsheader.js

线上a.tbcdn.cn

header.js

客户端 oop.js header.js

oop.js header.js

Page 18: 基于yui combo的代码自动压缩及合并

开发环境中的minify

Jsmin–

http://github.com/rgrove/jsmin-php/

Cssmin–

http://code.google.com/p/cssmin/

Page 19: 基于yui combo的代码自动压缩及合并

开发环境中的combo+minify

Combo

Minify

http://a.tbcdn.cn/combo.php?yui/3.0.0/build/oop/oop.js &tbra/2.1/header/header.js

http://a.tbcdn.cn/minify.php?yui/3.0.0/build/oop/oop.j s&tbra/2.1/header/header.js

Page 20: 基于yui combo的代码自动压缩及合并

相关资源 - minify

Combo+minify–

http://code.google.com/p/minify/

Page 21: 基于yui combo的代码自动压缩及合并

可维护性和性能之间的平衡•

YUI combo

模块树•

开发环境中的combo+minify

• 实例

Page 22: 基于yui combo的代码自动压缩及合并

淘宝彩票 – 时时彩•

http://a.tbcdn.cn/app/dp/lot/ssc/demo/ssc_none.html–

Ctrl+F5

Without combo

Page 23: 基于yui combo的代码自动压缩及合并

淘宝彩票 – 时时彩 续•

http://a.tbcdn.cn/app/dp/lot/ssc/demo/ssc.html–

Ctrl+F5

With combo

Page 24: 基于yui combo的代码自动压缩及合并

淘宝彩票 – 时时彩 续

combo+minify–

http://a.tbcdn.cn/app/dp/lot/ssc/demo/ssc.html

combo & minify

Page 25: 基于yui combo的代码自动压缩及合并

淘宝无combo

保存开发环境的combo mini文件•

另存到cdn中

打开COMBO_SCRIPT配置

Page 26: 基于yui combo的代码自动压缩及合并

你还在手动压缩脚本吗?•

你还在手动合并脚本吗?

那么你早就out了

Page 27: 基于yui combo的代码自动压缩及合并

Q & A