SlideShare a Scribd company logo
1 of 27
Download to read offline
基于YUI3和combo的代码压缩及合并
      拔赤 bachi@taobao.com
    http://www.uedagazine.com
            2010-05-29
关于我
• 李晶,花名拔赤
 – 淘宝前端工程师
 – Blog: http://www.uedmagazine.com
 – Msn: lijing00333@163.com
•   可维护性和性能之间的平衡
•   YUI combo
•   模块树
•   开发环境中的combo+minify
•   实例
• 可维护性和性能之间的平衡
•   YUI combo
•   模块树
•   开发环境中的combo+minify
•   实例
可维护性,我们应当这样:
1,OO(代码易读)
2,从应用抽象出组件(组件重用)
3,功能的颗粒化(多人协作)
4,图片的零存(更改简单)
5,脚本无压缩(方便调试)
性能,我们应当这样:
1,面向DOM(保证DOM操作效率)
2、3,更少的脚本文件(减少http请求数)
4,图片合并(减少http请求数)
5,压缩脚本(js、css瘦身)
我们的取舍?



 可维护性    vs   性能
• 可维护性和性能之间的平衡
• YUI combo
• 模块树
• 开发环境中的combo+minify
• 实例
Why YUI & combo?
• Why YUI
  – 延时加载脚本(更饱和的利用缓存)
  – 模块化(更适于团队开发)


• Why combo
  – 减少http请求数
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>
• 可维护性和性能之间的平衡
• YUI combo
• 模块树
• 开发环境中的combo+minify
• 实例
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']
       }
});
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
YUI combo的缺憾
1,没有自动压缩,上线之前要手动压缩脚本
2,自定义的modules不会被combo
对YUI3-loader的hack
• 让YUI可以combo所有的脚本
 – loader.js 1930行
• 可维护性和性能之间的平衡
• YUI combo
• 模块树
• 开发环境中的combo+minify
• 实例
开发环境中的combo
• Combo的模拟
                   开发环境a.tbcdn.cn            线上a.tbcdn.cn
客户端    oop.js
       header.js
                                                 oop.js
                       oop.js                   header.js
                                                   …
       oop.js                    header.js
       header.js



http://a.tbcdn.cn/combo.php?yui/3.0.0/build/oop/oop.js
&tbra/2.1/header/header.js
开发环境中的minify
• Jsmin
  – http://github.com/rgrove/jsmin-php/


• Cssmin
  – http://code.google.com/p/cssmin/
开发环境中的combo+minify
• Combo
http://a.tbcdn.cn/combo.php?yui/3.0.0/build/oop/oop.js
&tbra/2.1/header/header.js



• Minify
http://a.tbcdn.cn/minify.php?yui/3.0.0/build/oop/oop.j
s&tbra/2.1/header/header.js
相关资源 - minify
• Combo+minify
 – http://code.google.com/p/minify/
•   可维护性和性能之间的平衡
•   YUI combo
•   模块树
•   开发环境中的combo+minify
• 实例
淘宝彩票 – 时时彩
• http://a.tbcdn.cn/app/dp/lot/ssc/demo/ssc_none.html
  – Ctrl+F5




                Without combo
淘宝彩票 – 时时彩 续
• http://a.tbcdn.cn/app/dp/lot/ssc/demo/ssc.html
  – Ctrl+F5




                   With combo
淘宝彩票 – 时时彩 续
• combo+minify
 – http://a.tbcdn.cn/app/dp/lot/ssc/demo/ssc.html




               combo & minify
淘宝无combo
• 保存开发环境的combo mini文件
• 另存到cdn中
• 打开COMBO_SCRIPT配置
• 你还在手动压缩脚本吗?
• 你还在手动合并脚本吗?

• 那么你早就out了
Q&A

More Related Content

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

学习 CodeIgniter
学习 CodeIgniter学习 CodeIgniter
学习 CodeIgniterBruceWolf
 
谈谈模块化
谈谈模块化谈谈模块化
谈谈模块化衡锋 阳
 
面向未来的前端类库开发 — KISSY 类库构想与实践
面向未来的前端类库开发  — KISSY 类库构想与实践面向未来的前端类库开发  — KISSY 类库构想与实践
面向未来的前端类库开发 — KISSY 类库构想与实践taobao.com
 
KISSY Mechanism
KISSY MechanismKISSY Mechanism
KISSY Mechanismlifesinger
 
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化taobao.com
 
Javascript primer plus
Javascript primer plusJavascript primer plus
Javascript primer plusDongxu Yao
 
前端杂谈
前端杂谈前端杂谈
前端杂谈salinet
 
Build desktop app_by_xulrunner
Build desktop app_by_xulrunnerBuild desktop app_by_xulrunner
Build desktop app_by_xulrunnerRack Lin
 
從雛形到設計-了解您的使用者在想什麼
從雛形到設計-了解您的使用者在想什麼從雛形到設計-了解您的使用者在想什麼
從雛形到設計-了解您的使用者在想什麼Souyi Yang
 
Axure RP Prototyping Tool
Axure RP Prototyping ToolAxure RP Prototyping Tool
Axure RP Prototyping ToolSouyi Yang
 
编辑器设计Kissy editor
编辑器设计Kissy editor编辑器设计Kissy editor
编辑器设计Kissy editortaobao.com
 
a glance of Javascript module
a glance of Javascript modulea glance of Javascript module
a glance of Javascript modulezipeng zhang
 
KISSY Editor Design 2
KISSY Editor Design 2KISSY Editor Design 2
KISSY Editor Design 2yiming he
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构isnull
 
Clipper@datacon.2019.tw
Clipper@datacon.2019.twClipper@datacon.2019.tw
Clipper@datacon.2019.twWei-Yu Chen
 
编辑器设计2
编辑器设计2编辑器设计2
编辑器设计2yiming he
 
赵泽欣 - 淘宝网前端应用与发展
赵泽欣 - 淘宝网前端应用与发展赵泽欣 - 淘宝网前端应用与发展
赵泽欣 - 淘宝网前端应用与发展d0nn9n
 
你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020
你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020
你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020Shubo Chao
 
Kissy editor开发与设计
Kissy editor开发与设计Kissy editor开发与设计
Kissy editor开发与设计yiming he
 

Similar to 基于yui combo的代码自动压缩及合并 (20)

学习 CodeIgniter
学习 CodeIgniter学习 CodeIgniter
学习 CodeIgniter
 
谈谈模块化
谈谈模块化谈谈模块化
谈谈模块化
 
面向未来的前端类库开发 — KISSY 类库构想与实践
面向未来的前端类库开发  — KISSY 类库构想与实践面向未来的前端类库开发  — KISSY 类库构想与实践
面向未来的前端类库开发 — KISSY 类库构想与实践
 
KISSY Mechanism
KISSY MechanismKISSY Mechanism
KISSY Mechanism
 
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
 
Javascript primer plus
Javascript primer plusJavascript primer plus
Javascript primer plus
 
前端杂谈
前端杂谈前端杂谈
前端杂谈
 
kissy@2013
kissy@2013kissy@2013
kissy@2013
 
Build desktop app_by_xulrunner
Build desktop app_by_xulrunnerBuild desktop app_by_xulrunner
Build desktop app_by_xulrunner
 
從雛形到設計-了解您的使用者在想什麼
從雛形到設計-了解您的使用者在想什麼從雛形到設計-了解您的使用者在想什麼
從雛形到設計-了解您的使用者在想什麼
 
Axure RP Prototyping Tool
Axure RP Prototyping ToolAxure RP Prototyping Tool
Axure RP Prototyping Tool
 
编辑器设计Kissy editor
编辑器设计Kissy editor编辑器设计Kissy editor
编辑器设计Kissy editor
 
a glance of Javascript module
a glance of Javascript modulea glance of Javascript module
a glance of Javascript module
 
KISSY Editor Design 2
KISSY Editor Design 2KISSY Editor Design 2
KISSY Editor Design 2
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构
 
Clipper@datacon.2019.tw
Clipper@datacon.2019.twClipper@datacon.2019.tw
Clipper@datacon.2019.tw
 
编辑器设计2
编辑器设计2编辑器设计2
编辑器设计2
 
赵泽欣 - 淘宝网前端应用与发展
赵泽欣 - 淘宝网前端应用与发展赵泽欣 - 淘宝网前端应用与发展
赵泽欣 - 淘宝网前端应用与发展
 
你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020
你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020
你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020
 
Kissy editor开发与设计
Kissy editor开发与设计Kissy editor开发与设计
Kissy editor开发与设计
 

More from jay li

犀牛书第六版
犀牛书第六版犀牛书第六版
犀牛书第六版jay li
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践jay li
 
Jswebapps
JswebappsJswebapps
Jswebappsjay li
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascriptjay li
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Designjay li
 
深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器jay li
 
HTML/CSS/JS基础
HTML/CSS/JS基础HTML/CSS/JS基础
HTML/CSS/JS基础jay li
 
淘宝前端技术巡礼
淘宝前端技术巡礼淘宝前端技术巡礼
淘宝前端技术巡礼jay li
 
F2e security
F2e securityF2e security
F2e securityjay li
 
中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟jay li
 
卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎jay li
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤jay li
 
小控件、大学问
小控件、大学问小控件、大学问
小控件、大学问jay li
 
Mobile UI design and Developer
Mobile UI design and DeveloperMobile UI design and Developer
Mobile UI design and Developerjay li
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
Html5form
Html5formHtml5form
Html5formjay li
 
Js doc toolkit
Js doc toolkitJs doc toolkit
Js doc toolkitjay li
 
新业务新员工培训 Banner设计
新业务新员工培训   Banner设计新业务新员工培训   Banner设计
新业务新员工培训 Banner设计jay li
 
夏之 专题设计
夏之 专题设计夏之 专题设计
夏之 专题设计jay li
 

More from jay li (20)

犀牛书第六版
犀牛书第六版犀牛书第六版
犀牛书第六版
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
 
Jswebapps
JswebappsJswebapps
Jswebapps
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascript
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Design
 
深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器
 
HTML/CSS/JS基础
HTML/CSS/JS基础HTML/CSS/JS基础
HTML/CSS/JS基础
 
淘宝前端技术巡礼
淘宝前端技术巡礼淘宝前端技术巡礼
淘宝前端技术巡礼
 
F2e security
F2e securityF2e security
F2e security
 
中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟
 
卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤
 
小控件、大学问
小控件、大学问小控件、大学问
小控件、大学问
 
Mobile UI design and Developer
Mobile UI design and DeveloperMobile UI design and Developer
Mobile UI design and Developer
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
Html5form
Html5formHtml5form
Html5form
 
Slide
SlideSlide
Slide
 
Js doc toolkit
Js doc toolkitJs doc toolkit
Js doc toolkit
 
新业务新员工培训 Banner设计
新业务新员工培训   Banner设计新业务新员工培训   Banner设计
新业务新员工培训 Banner设计
 
夏之 专题设计
夏之 专题设计夏之 专题设计
夏之 专题设计
 

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