感觉yui 3最大特点之一就是模块化,官网给出的例子中也都是从YUI().use()开始的。为了让这种模板化具有可行性,yui提供了一套管理和加载模块的机制(Loader,Get)和ydn提供的combine功能.这样做很好,但它太依赖ydn提供的cdn了,对于个人站来说这样可能既方便又不用占用自己的空间,但对于其他公司来说将js框架放在yahoo提供的免费CDN上肯定不放心,而且没有足够的控制权。要解决这个问题只能让本公司的运维部门也提供一个有cobine功能的cdn网络,但这样会增加很多成本,甚至根本就无法实现(比如公司的cnd采用HTTP 1.0协议)。然而没有cobine又会增加很多http请求次数,比如加载一个”node”,需要请求7个js文件。
一个折中的方法就是根据自己的需求把小模块合成大模块一并加载,可以通过增加Loader中META.modules的属性来实现,比如在modules里添加customize模块:
customize:{
requires:[YUIBASE]
},
customize2:{
requires:[YUIBASE,'coustomize']
}
然后在build文件下建立 customize/customize-min.js , 在这个js文件里把需要的多个模块组合进去,customize2同理。
近期准备在一个相对独立的项目中使用yui 3.0.0b1 ,顺便看下yui 3的性能如何。这是我第一次接触yui,感觉yui的确为团队开发做了很多工作,比如模块化和沙盒。