下面说下LoadComponent中的方法:
setContainer(container) 加载信息输出容器,不设置则不输出,这里的参数为JQuery对象,请在执行traverse()之前调用。
addURL(url,name,type,callBack)添加一个需加载的脚本,只有URL为必要参数;name为添加的资源名字,如果你设置了输出容器,则这个名字会在容器中显示,type为资源类型 html, json,xml,script,由于自己项目原因我这里设置了默认值为script,callBack这里的回调方法是加载完该URL所调用的方法。
ready(callBack) 完成加载所有脚本后所执行的回调方法,如上述initMain就会在所有资源加载完后执行,可多次使用ready(callBack)添加多个回调方法,按添加顺序执行,请在执行traverse()之前调用。
traverse() 开始同步加载添加的所有URL。执行此方法后,会自动执行clear() 方法,释放内存,所以,不要在执行完traverse()方法后继续使用该对象,应从新create一个新对象。
注:LoadComponent是基于jquery写的,所以之前还是需要先让浏览器把jquery加载完,但jquery体积还算是比较小的,无所谓了。
---------------------------------------
其实,你写的这个方法效率还是不够高。因为它是顺序请求的,而不是并发请求。
比如要加载a, b, c这3个JS文件,你的做法是a请求完成了再请求b,…… 相当于总的时间中还包含了3次http连接建立的时间。
其实要保证运行顺序,可以3个文件一起请求。等到都请求完毕后再按顺序合并a, b, c,进行执行。可行的做法之一就是在每个文件下载完的回调函数里去给一个全局变量加上此文件已加载完的标记,同时判断是否已经全部加载完,完了就再按顺序写入某DOM对象的innerHTML。
或者弄个更高效更简洁的办法:将合并这步操作放到服务器执行,页面只用请求一次:将a, b, c作为参数发给服务器。但它的坏处是不能缓存。
---------------------------------------
不知道有多少人了解过腾讯一个类似这样功能的js....很好很强大的。。